ENGLISH VERSION |
|
Links | | | Forum | | | Kommentare | | | News melden |
Chat | | | Umfragen | | | Newsticker | | | Archiv |
amiga-news.de Forum > Programmierung > gcc und include | [ - Suche - Neue Beiträge - Registrieren - Login - ] |
-1- | [ - Beitrag schreiben - ] |
23.03.2005, 22:44 Uhr Robin Posts: 1056 Nutzer |
Ich habe mich entschlossen (mal wieder) c zu lernen. Beginnen wollte ich damit ein paar Sachen zu compilieren um zu sehen was passiert ... Mein erstes "Opfer" sollte YAM sein. Leider bricht es mit einer Fehlermeldung ab. (Ich habe den MorphOS-GCC von GoldEd AIX) /gg/ppc-morphos/bin/ld: cannot open -lxpk: No such file or directory collect2: ld returned 1 exit status make: *** [YAM.mos] Error 1 Snoopdos listet dazu eine Menge FAILS mit .rpo am Ende und sucht wie wild nach der Datei libxpk.a 785 [11] ld Lock usr:lib/libxpk.a Read Fail 786 [11] ld Open usr:lib/libxpk.a Read Fail 811 [1] collect2 Lock DH4:CVS/yamos/.obj_mos/YAM.rpo Read Fail 812 [1] collect2 Lock DH4:CVS/yamos/.obj_mos/YAM_AB.rpo Read Fail 813 [1] collect2 Lock DH4:CVS/yamos/.obj_mos/YAM_CO.rpo Read Fail 814 [1] collect2 Lock DH4:CVS/yamos/.obj_mos/YAM_COg.rpo Read Fail Ich habe gegoogelt, habe mir das xpk-developer-paket geladen und bin trotzdem immer noch nicht weiter, weil ich einfach nicht weiss was ich machen muss , bzw was falsch laeuft. Kann mir jemand einen Tip geben ? -- my.morphosi.net [ - Antworten - Zitieren - Direktlink - ] |
24.03.2005, 09:23 Uhr gni Posts: 1106 Nutzer |
Zitat:Nimm -lxpk mal aus dem Makefile raus. Eventuell braucht man das gar nicht. Falls doch, dann besorg Dir auch gleich libamissl.a. Diese Bibliotheken kannst Du dann in gg:ppc-morphos/lib ablegen. Da ich kein MOS habe, muß das nicht unbedingt stimmen Zitat:Das kannst Du ignorieren. AFAIK ist das nur bei C++ und Templates relevant (-frepo). [ - Antworten - Zitieren - Direktlink - ] |
24.03.2005, 09:50 Uhr Robin Posts: 1056 Nutzer |
Zitat: Yam packt Dateien auf Wunsch mit xpk, ich brauche es also. Mein Problem ist, dass im xpk-dev Archiv eine Datei mit Namen libxpk.a nicht existiert. (Auch libamissl.a existiert nicht im AmiSSL-SDK) Ich nehme an ich muss sie irgendwie erstellen ... aber wie ? -- my.morphosi.net [ - Antworten - Zitieren - Direktlink - ] |
24.03.2005, 10:57 Uhr gni Posts: 1106 Nutzer |
Zitat:Was ist so schwer daran, meinen Vorschlag auszuprobieren? :-( Ich weis, das YAM auf Wunsch zum Packen verwendet. Das hat aber nichts mit dem Kompilieren zu tun. [ - Antworten - Zitieren - Direktlink - ] |
24.03.2005, 11:14 Uhr Robin Posts: 1056 Nutzer |
ups ... ist natuerlich nicht schwer,sorry. Linking YAM.mos .obj_mos/YAM_COg.o: In function 'MakeXPKPop': /GNU/yamos/YAM_COg.c:166: undefined reference to 'XpkQueryTags' /GNU/yamos/YAM_COg.c:175: undefined reference to 'XpkQueryTags' collect2: ld returned 1 exit status make: *** [YAM.mos] Error 1 Was ich meinte war, das in Yam ja irgendwo diese xpk-routinen aufgerufen werden und dann bricht es ab. Daher denke ich, dass ich diese libXXX.a Dateien irgendwie brauche. -- my.morphosi.net [ - Antworten - Zitieren - Direktlink - ] |
24.03.2005, 13:09 Uhr DariusBrewka Posts: 899 [Benutzer gesperrt] |
Ich weiss nicht so 100%, aber kann fd2pragma diese Datei nicht erzeugen? ich denke xpkxxx.a wird nur dazu dienen Library aufrufe für die xpk.library zu vereinfachen oder? [ - Antworten - Zitieren - Direktlink - ] |
24.03.2005, 13:15 Uhr Robin Posts: 1056 Nutzer |
@Darius Ja, das hab ich mir auch schon runtergeladen. Leider habe ich aber auch dabei keine Ahnung wie man es anwendet ... Ich habe aus dem XPK-Archiv nur Dateien mit den Endungen .h und .c ... in den Beispielen wird fd2pragma aber mit fd Dateien benutzt ... Ich stehe voellig auf dem Schlauch :/ -- my.morphosi.net [ - Antworten - Zitieren - Direktlink - ] |
24.03.2005, 13:36 Uhr gni Posts: 1106 Nutzer |
Zitat:Ändere die Regel zum Übersetzen (drüber steht "Compiling) und füge -DUSE_INLINE_STDARG hinzu. Dann löscht Du YAM_COg.o und übersetz noch mal. Wenn Du Meldungen über fehlende Referenzen zu AmiSSL-Funktionen bekommst, lösch Du diese Objekte auch und wirfst make dan wieder an. Zitat:Funktionen aus shared-libraries werden inline aufgerufen. Damit das auch bei Varargs-Funktionen passiert, muß man eingreifen. In diesem Fall wäre es besser die Bibliotheken zu installieren. [ Dieser Beitrag wurde von gni am 24.03.2005 editiert. ] [ - Antworten - Zitieren - Direktlink - ] |
24.03.2005, 13:52 Uhr Robin Posts: 1056 Nutzer |
Zitat: cpp0: Internal compiler error in 'rescan', at ../../gcc/cccp.c:3174 Please submit a full bug report. See <URL:http://www.gnu.org/software/gcc/bugs.html> for instructions. make: *** [.obj_mos/YAM_AB.o] Error 1 Zitat: Da waere sie wieder meine Frage: Wie ? Wie erstelle ich die libxpk.a / libamissl.a wenn ich nur die .c .h Dateien habe ? -- my.morphosi.net [ - Antworten - Zitieren - Direktlink - ] |
24.03.2005, 15:17 Uhr gni Posts: 1106 Nutzer |
Zitat:Warum baust Du *alles* neu? :-( Bitte mache es genau wie vorher gesagt. Nur die löschen, die unresolved-Symbols haben. Allerdings erklärt der Fehler, warum USE_INLINE_STADRG nicht benutzt wird. Zitat:Das kann ich Dir nicht genau sagen. fd2pragma müßte es können. Da sind Beispielskripte dabei. Eventuell helfen die. [ - Antworten - Zitieren - Direktlink - ] |
24.03.2005, 16:51 Uhr Robin Posts: 1056 Nutzer |
Weil es einzeln gar nichts gebracht hat. Dabei alles neu zu kompilieren kam wenigstens dieser Fehler. Nochmal von vor: Das Problem ist nicht der Compiler, nicht das Makefile und auch nicht das Programm (YAM). Mein Problem ist es, dass ich nicht weiss wie ich die Includes von xpk und auch amissl so installiere, dass dabei die libXXX.a Dateien erstellt werden. -- my.morphosi.net [ - Antworten - Zitieren - Direktlink - ] |
24.03.2005, 18:27 Uhr geit Posts: 332 [Ex-Mitglied] |
> Da waere sie wieder meine Frage: Wie ? Wie erstelle ich die libxpk.a / libamissl.a wenn ich nur die .c .h Dateien habe ? Du mußt alle #?.c files, die in die lib gehören compilieren. Die #?.o files kannst du mit ar -qs libxxx.a xx1.o xx2.o xx3.o .... zusammenfassen und die lib erzeugen. Ich hoffe die Syntax stimmte jetzt so aus dem Kopf. Guido Mersmann [ Dieser Beitrag wurde von geit am 24.03.2005 editiert. ] [ - Antworten - Zitieren - Direktlink - ] |
25.03.2005, 01:09 Uhr Dietmar Posts: 166 Nutzer |
Zitat: Ich verstehe zwar nichts von gcc aber meint er nicht die stubs für eine Shared-Library? Die fd/sfd-Datei(en) der Library durch fd2pragma schicken. Das macht dann daraus, je nach EXTRA/N-Parameter, eine proto-Datei, eine gcc-Inline-Datei oder Stubs. fd2pragma braucht i.d.R. nur drei Parameter: INFILE (die fd/sfd-Datei), TO (Zieldatei, in diesem Fall libxpk.a) und SPECIAL/N (Parameter der festlegt, was erzeugt werden soll). Im Falle von Stubs wird mit dem richtigen SPECIAL-Parameter direkt die Library zum Linken erzeugt, compilieren muss man nichts. Bei XPK liegt übrigens eine fd-Datei bei, im include-Verzeichnis: xpkmaster.fd. Für MorphOS ist SPECIAL/N wahrscheinlich ein Wert von denen hier (132/133 hören sich interessant an): (MorphOS files) 130: Creates new style GCC inline files for MorphOS. 131: Creates old style GCC inline files for MorphOS. 132: Creates GCC library stubs for MorphOS. 133: Creates GCC library stubs for MorphOS with direct varargs. 134: Creates MorphOS gate stubs. 135: Creates MorphOS gate stubs with prefixed library base. 136: Creates MorphOS gate stubs with postfixed library base. 137: Like 135, but with register base. 138: Like 136, but with register base. Wer GoldED benutzt und die inline/proto-Dateien für eine beliebige Shared-Library und gcc/68k erzeugen will, kann sich das Lesen der fd2pragma-Anleitung ersparen: im Extra-Menü "Rexx-Makro ausführen..." wählen und als Makro im Dateidialog "golded:add-ons/c++/rexx/gcc/inline.rexx" auswählen. Das führt durch die Schritte. [ - Antworten - Zitieren - Direktlink - ] |
25.03.2005, 02:48 Uhr Robin Posts: 1056 Nutzer |
@Guido Das mit dem ar hoert sich nach dem an was ich brauche Leider schmeisst gcc mir wieder Sachen um die Ohren Test:xpk_Develop/Include/C/xpk> gcc -noixemul xpkLibHeader.c -o test xpkLibHeader.c:22: parse error before 'LibExpunge' xpkLibHeader.c:22: warning: 'struct XpkSubBase' declared inside parameter list xpkLibHeader.c:22: warning: its scope is only this definition or declaration, which is probably not what you want. xpkLibHeader.c:22: warning: data definition has no type or storage class xpkLibHeader.c:23: parse error before 'LibClose' xpkLibHeader.c:23: warning: 'struct XpkSubBase' declared inside parameter list xpkLibHeader.c:23: warning: data definition has no type or storage class xpkLibHeader.c:24: parse error before 'struct' xpkLibHeader.c:58: parse error before 'LibExpunge' xpkLibHeader.c:58: warning: 'struct XpkSubBase' declared inside parameter list xpkLibHeader.c:59: conflicting types for 'LibExpunge' xpkLibHeader.c:22: previous declaration of 'LibExpunge' xpkLibHeader.c: In function 'LibExpunge': xpkLibHeader.c:60: 'BPTR' undeclared (first use in this function) xpkLibHeader.c:60: (Each undeclared identifier is reported only once xpkLibHeader.c:60: for each function it appears in.) xpkLibHeader.c:60: parse error before 'Result' xpkLibHeader.c:63: dereferencing pointer to incomplete type xpkLibHeader.c:66: dereferencing pointer to incomplete type xpkLibHeader.c:68: dereferencing pointer to incomplete type xpkLibHeader.c:76: 'Result' undeclared (first use in this function) xpkLibHeader.c:76: dereferencing pointer to incomplete type xpkLibHeader.c:79: dereferencing pointer to incomplete type xpkLibHeader.c:80: dereferencing pointer to incomplete type xpkLibHeader.c:80: dereferencing pointer to incomplete type xpkLibHeader.c: At top level: xpkLibHeader.c:88: parse error before 'LibClose' xpkLibHeader.c:88: warning: 'struct XpkSubBase' declared inside parameter list xpkLibHeader.c:89: conflicting types for 'LibClose' xpkLibHeader.c:23: previous declaration of 'LibClose' xpkLibHeader.c: In function 'LibClose': xpkLibHeader.c:90: 'BPTR' undeclared (first use in this function) xpkLibHeader.c:90: parse error before 'Result' xpkLibHeader.c:92: dereferencing pointer to incomplete type xpkLibHeader.c:94: dereferencing pointer to incomplete type xpkLibHeader.c:95: 'Result' undeclared (first use in this function) xpkLibHeader.c:95: warning: passing arg 1 of 'LibExpunge' from incompatible pointer type xpkLibHeader.c: At top level: xpkLibHeader.c:102: parse error before 'struct' xpkLibHeader.c:127: 'XpkSubBase' undeclared here (not in a function) xpkLibHeader.c:127: 'XpkSubBase' undeclared here (not in a function) xpkLibHeader.c:127: initializer element is not constant xpkLibHeader.c:127: parse error before '->' xpkLibHeader.c:127: parse error before '->' xpkLibHeader.c:127: parse error before '->' xpkLibHeader.c:127: parse error before '->' xpkLibHeader.c:128: warning: data definition has no type or storage class xpkLibHeader.c:129: parse error before '}' xpkLibHeader.c:141: 'LibOpen' undeclared here (not in a function) xpkLibHeader.c:141: initializer element is not constant xpkLibHeader.c:141: (near initialization for 'LibVectors[0]') xpkLibHeader.c:145: 'LIBXpksPackerInfo' undeclared here (not in a function) xpkLibHeader.c:145: initializer element is not constant xpkLibHeader.c:145: (near initialization for 'LibVectors[4]') xpkLibHeader.c:146: 'LIBXpksPackChunk' undeclared here (not in a function) xpkLibHeader.c:146: initializer element is not constant xpkLibHeader.c:146: (near initialization for 'LibVectors[5]') xpkLibHeader.c:147: 'LIBXpksPackFree' undeclared here (not in a function) xpkLibHeader.c:147: initializer element is not constant xpkLibHeader.c:147: (near initialization for 'LibVectors[6]') xpkLibHeader.c:148: 'LIBXpksPackReset' undeclared here (not in a function) xpkLibHeader.c:148: initializer element is not constant xpkLibHeader.c:148: (near initialization for 'LibVectors[7]') xpkLibHeader.c:149: 'LIBXpksUnpackChunk' undeclared here (not in a function) xpkLibHeader.c:149: initializer element is not constant xpkLibHeader.c:149: (near initialization for 'LibVectors[8]') xpkLibHeader.c:150: 'LIBXpksUnpackFree' undeclared here (not in a function) xpkLibHeader.c:150: initializer element is not constant xpkLibHeader.c:150: (near initialization for 'LibVectors[9]') xpkLibHeader.c:156: 'LIBNAME' undeclared here (not in a function) xpkLibHeader.c:156: initializer element is not constant xpkLibHeader.c:156: (near initialization for 'LibInitData.d_Name') xpkLibHeader.c:158: 'VERSION' undeclared here (not in a function) xpkLibHeader.c:158: initializer element is not constant xpkLibHeader.c:158: (near initialization for 'LibInitData.d_Version') xpkLibHeader.c:159: 'REVISION' undeclared here (not in a function) xpkLibHeader.c:159: initializer element is not constant xpkLibHeader.c:159: (near initialization for 'LibInitData.d_Revision') xpkLibHeader.c:160: 'IDSTRING' undeclared here (not in a function) xpkLibHeader.c:160: initializer element is not constant xpkLibHeader.c:160: (near initialization for 'LibInitData.d_IdString') xpkLibHeader.c:169: sizeof applied to an incomplete type xpkLibHeader.c:173: 'LibInit' undeclared here (not in a function) xpkLibHeader.c:173: initializer element is not constant xpkLibHeader.c:173: (near initialization for 'LibInitTable[3]') xpkLibHeader.c:187: 'VERSION' undeclared here (not in a function) xpkLibHeader.c:187: initializer element is not constant xpkLibHeader.c:187: (near initialization for 'RomTag.rt_Version') xpkLibHeader.c:190: 'LIBNAME' undeclared here (not in a function) xpkLibHeader.c:190: initializer element is not constant xpkLibHeader.c:190: (near initialization for 'RomTag.rt_Name') xpkLibHeader.c:191: 'IDSTRING' undeclared here (not in a function) xpkLibHeader.c:191: initializer element is not constant xpkLibHeader.c:191: (near initialization for 'RomTag.rt_IdString') @Dietmar Ups, das FD Verzeichnis habe ich unter den anderen Programmiersprachen glatt uebersehen. Und das Arexx-Skript platziert die noetigen Files im GG ... das hilft bei der Installation -- my.morphosi.net [ - Antworten - Zitieren - Direktlink - ] |
25.03.2005, 11:38 Uhr Robin Posts: 1056 Nutzer |
@Dietmar Mit fd2pragma erhalte ich folgendes (egal welche nr) fd2pragma xpkmaster_lib.fd special 132 to libxpk.a SourceFile: xpkmaster_lib.fd Warning 46 : Missing the types definition file. Using internal defaults. ResultFile: libxpk.a/xpkmaster.h Error 38 : Could not open file "libxpk.a/xpkmaster.h". Nachtrag: mit diesem command erstellt es eine xpkmaster.h ... aber hilft mir auch nicht weiter ??? fd2pragma :xpk_Develop/Include/FD/xpkmaster_lib.fd clib :xpk_Develop/Include/C/clib/xpkmaster_protos.h special 131 to ram: -- my.morphosi.net [ Dieser Beitrag wurde von Robin am 25.03.2005 editiert. ] [ - Antworten - Zitieren - Direktlink - ] |
25.03.2005, 13:14 Uhr Robin Posts: 1056 Nutzer |
D A N K E ! An alle die mir geholfen haben perl bin:cvinclude.pl --gluelib=libxpk.a --srcdir=dh2:xpk_Develop/Include/c --fd=dh2:xpk_Develop/Include/FD/xpkmaster_lib.fd --clibdir=dh2:xpk_Develop/Include/C/clib/xpkmaster_protos.h --destdir=ram: -- my.morphosi.net [ - Antworten - Zitieren - Direktlink - ] |
25.03.2005, 18:58 Uhr Dietmar Posts: 166 Nutzer |
Zitat: Hast Du auch 12-14 ausprobiert? 12 - stub-functions for C - link library 13 - defines and link library for local library base (register call) 14 - defines and link library for local library base (stack call) [ - Antworten - Zitieren - Direktlink - ] |
25.03.2005, 20:40 Uhr Robin Posts: 1056 Nutzer |
Zumindest habe ich es versucht ... mit usefd2pragma habe ich soviele Varianten ausprobiert wie moeglich. Es kamen aber irgendwie immer nur eine Zusammenstellung der Header dabei raus ... Erst durch Einsatz des Perl-Scripts (s.o.) habe ich dann endlich die libxpk.a und libamissl.a erstellen koennen. Und jetzt nutze ich ein selbstkompiliertes YAM War nicht ganz so einfach wie ich gedacht habe, aber Stueck fuer Stueck taste ich mich an gcc ran ... Aber es scheint mir ich sollte doch vom anderen Ende anfangen. Also erst mal selbst ein paar kleine c-programme schreiben und dann sehen wie gcc darauf reagiert Aber eh das Fruechte traegt ist wohl wieder Weihnachten Vielen Dank nochmal fuer die Hilfe. Ich komme bestimmt bald mit c-Fragen -- my.morphosi.net [ - Antworten - Zitieren - Direktlink - ] |
25.03.2005, 22:45 Uhr Dietmar Posts: 166 Nutzer |
Zitat: Hmm?! 3.System:> devkits:tools/fd2pragma/fd2pragma from=xpk_Develop/Include/FD/xpkmaster_lib.fd to=t: special=12 clib=xpk_Develop/Include/C/clib/xpkmaster_protos.h SourceFile: xpk_Develop/Include/FD/xpkmaster_lib.fd ResultFile: t:xpkmaster.lib 3.System:> devkits:tools/fd2pragma/fd2pragma from=xpk_Develop/Include/FD/xpkmaster_lib.fd to=t: special=13 clib=xpk_Develop/Include/C/clib/xpkmaster_protos.h SourceFile: xpk_Develop/Include/FD/xpkmaster_lib.fd ResultFile: t:xpkmaster_loc.h ResultFile: t:xpkmaster_loc.lib 3.System:> devkits:tools/fd2pragma/fd2pragma from=xpk_Develop/Include/FD/xpkmaster_lib.fd to=t: special=14 clib=xpk_Develop/Include/C/clib/xpkmaster_protos.h SourceFile: xpk_Develop/Include/FD/xpkmaster_lib.fd ResultFile: t:xpkmaster_loc.h ResultFile: t:xpkmaster_loc.lib Funktioniert doch? (*.lib) [ - Antworten - Zitieren - Direktlink - ] |
26.03.2005, 04:57 Uhr Robin Posts: 1056 Nutzer |
Zitat: Stimmt Da hab ich wohl gepennt. -- my.morphosi.net [ - Antworten - Zitieren - Direktlink - ] |
-1- | [ - Beitrag schreiben - ] |
amiga-news.de Forum > Programmierung > gcc und include | [ - Suche - Neue Beiträge - Registrieren - Login - ] |
Impressum |
Datenschutzerklärung |
Netiquette |
Werbung |
Kontakt
Copyright © 1998-2024 by amiga-news.de - alle Rechte vorbehalten. |