ENGLISH VERSION |
|
Links | | | Forum | | | Kommentare | | | News melden |
Chat | | | Umfragen | | | Newsticker | | | Archiv |
amiga-news.de Forum > Programmierung > GCC und NDK_3.9-Examples | [ - Suche - Neue Beiträge - Registrieren - Login - ] |
-1- | [ - Beitrag schreiben - ] |
12.02.2006, 10:42 Uhr Stefan Posts: 936 Nutzer |
Hallo, Suche schon paar Tage in alten Beiträgen hier und bei Google, z.T. hilfreich , aber ich kriege es trotzdem nicht gebacken. Da ich aber noch völlig am Anfang stehe, ist dies vielleicht nicht verwunderlich. Meine Experimentierfreude ist allerdings hoch. Funktionierende GG-Umgebung, NDK-3.9 und der GCC in den Versionen (2.95.3, 3.3 und 3.4) sind vorhanden und wurde über die Installerversionen installiert (habe dafür extra eine frische Testumgebung angelegt). Kompilieren von "HelloWorld" ist kein Problem, ebenso andere kleinere Sachen z.B. (1)und (2), aber sobald es an die Demos vom NDK (Reaction) geht, klappt nichts mehr. (1) Demo aus einem Workshop - Schleife /* Listing 1.7 * Schleifen mit for */ #include <stdio.h> int main(void) { int i,max; printf("Wie oft? "); scanf("%d",&max); /* Schleife wird forgestzt, solange der Zähler i * kleiner oder gleich max ist. Dabei wird i in jedem * Durchlauf mit i++ um 1 erhöht. */ for (i=1;i<=max;i++) { printf("%d. Ich darf den Lehrer nicht ärgern.n",i); } return 0; } (2) http://liquido2.com/tutorial/deutsch/einfaches_fenster.html Ich habe die Includes nach "OS-Includes", die FD-Files nach "GG:FD" und die Linker_Libs nach "GG:m68k-amigaos/lib" kopiert. (Alles manuell, da der Amiga keine Onlineanbindung hat und es deshalb nicht mit der automagischen Installation klappt). Ist da vielleicht doch etwas falsch? Desweiteren habe ich noch die Inline-Files nach folgenden Schema bzw. mit dem Script aus der Installerversion erzeugt. fd2inline GG:os-lib/fd/exec_lib.fd GG:os-include/clib/exec_protos.h -o GG:include/inline/exec.h (ohne Umbruch natürlich ) Hier kommt aber folgende Fehlermeldung Generating the inlines... don't know what to do with <RefreshDTObjects> in line 63. Gleiche Prozedur dann für neue Protos (gen_protos.script) Die Fehlermeldungen welche hier erscheinen, (weder das SnoopDos-Log noch die "-v Option" von "gcc" helfen mir weiter) decken sich so z.T. mit denen in diesem älteren Beitrag (1). | undefined reference to 'LAYOUT_GetClass' (3) | undefined reference to 'STRING_GetClass' | undefined reference to 'LISTBROWSER_GetClass' | undefined reference to 'WINDOW_GetClass' (4) | undefined reference to 'AllocListBrowserNode' (2) | undefined reference to 'FreeListBrowserList' | undefined reference to 'GetListBrowserNodeAttrs' (1) http://www.amiga-news.de/forum/thread.php?id=6745&BoardID=7 gcc -noixemul ListBrowserExample.c -o ListBrowserExample /t/cctJGG37.o(.text+0x57e): undefined reference to 'LISTBROWSER_GetClass' (*) /t/cctJGG37.o(.text+0x8ba): undefined reference to 'LABEL_GetClass' /t/cctJGG37.o(.text+0x914): undefined reference to 'LABEL_GetClass' /t/cctJGG37.o(.text+0x954): undefined reference to 'AllocListBrowserNode' (2) /t/cctJGG37.o(.text+0x99e): undefined reference to 'AllocListBrowserNode' (2) /t/cctJGG37.o(.text+0xa48): undefined reference to 'FreeListBrowserNode' /t/cctJGG37.o(.text+0xa54): undefined reference to 'FreeListBrowserNode' /t/cctJGG37.o(.text+0xd74): undefined reference to 'AllocListBrowserNode' /t/cctJGG37.o(.text+0xdd2): undefined reference to 'FreeListBrowserNode' collect2: ld returned 1 exit status --------------- gcc -noixemul ClockIcon.c ClockIcon.c:5: /workbench.h: Device not configured --------------- gcc -noixemul checkboxexample.c -o checkboxexample /t/cc8FOEV2.o(.text+0x2fc): undefined reference to 'LABEL_GetClass' /t/cc8FOEV2.o(.text+0x352): undefined reference to 'LAYOUT_GetClass' (3) /t/cc8FOEV2.o(.text+0x39a): undefined reference to 'CHECKBOX_GetClass' /t/cc8FOEV2.o(.text+0x3f2): undefined reference to 'CHECKBOX_GetClass' /t/cc8FOEV2.o(.text+0x432): undefined reference to 'LAYOUT_GetClass' (3) /t/cc8FOEV2.o(.text+0x4c8): undefined reference to 'WINDOW_GetClass' (4) collect2: ld returned 1 exit status --------------- gcc ReactionDemo.c ReactionDemo.c:19: conflicting types for 'DOSBase' /gg/os-include/proto/dos.h:23: previous declaration of 'DOSBase' Was ist denn das nun wieder? mit der -v Option dann gcc -v ReactionDemo.c Reading specs from /gg/lib/gcc-lib/m68k-amigaos/2.95.3/specs gcc version 2.95.3 20010315 (release) /gg/lib/gcc-lib/m68k-amigaos/2.95.3/cpp0 -lang-c -v -D__GNUC__=2 -D__GNUC_MINOR__=95 -Dmc68000 -Damiga -Damigaos -DMCH_AMIGA -DAMIGA -D__chip=__attribute__((__chip__)) -D__saveds=__attribute__((__saveds__)) -D__interrupt=__attribute__((__interrupt__)) -D__stackext=__attribute__((__stackext__)) -D__regargs=__attribute__((__regparm__)) -D__stdargs=__attribute__((__stkparm__)) -D__aligned=__attribute__((__aligned__(4))) -D__mc68000__ -D__amiga__ -D__amigaos__ -D__MCH_AMIGA__ -D__AMIGA__ -D__chip=__attribute__((__chip__)) -D__saveds=__attribute__((__saveds__)) -D__interrupt=__attribute__((__interrupt__)) -D__stackext=__attribute__((__stackext__)) -D__regargs=__attribute__((__regparm__)) -D__stdargs=__attribute__((__stkparm__)) -D__aligned=__attribute__((__aligned__(4))) -D__mc68000 -D__amiga -D__amigaos -D__MCH_AMIGA -D__AMIGA -Asystem(amigaos) -Acpu(m68k) -Amachine(m68k) -Dixemul -D__ixemul__ -D__ixemul ReactionDemo.c /t/ccL4a90U.i GNU CPP version 2.95.3 20010315 (release) (68k, MIT syntax) #include "..." search starts here: #include <...> search starts here: /gg/lib/gcc-lib/m68k-amigaos/2.95.3/../../../../m68k-amigaos/include /gg/lib/gcc-lib/m68k-amigaos/2.95.3/include /gg/os-include /gg/include End of search list. The following default directories have been omitted from the search path: /gg/lib/gcc-lib/m68k-amigaos/2.95.3/../../../../include/g++-3 /gg/local/include End of omitted list. /gg/lib/gcc-lib/m68k-amigaos/2.95.3/cc1 /t/ccL4a90U.i -quiet -dumpbase ReactionDemo.c -version -o /t/ccIStRzi.s GNU C version 2.95.3 20010315 (release) (m68k-amigaos) compiled by GNU C version 2.95.3 20010315 (release). ReactionDemo.c:19: conflicting types for 'DOSBase' /gg/os-include/proto/dos.h:23: previous declaration of 'DOSBase' Örks, --------------- Liegt das an der "reaction.lib"? (kein Beispiel vom NDK oder aus dem Aminet funktionieren) | Currently the "reaction.lib" support library for Reaction is | only usable with SAS/C. Nun habe ich von "http://stephan-rupprecht.de" die Ersatzlib geladen. Sollte es damit funktionieren? Wie muss ich sie richtig einbinden? Weil ich habe die "reaction.lib" und das "reaction_lib_protos.h" ersetzt und dann obige Scripts für die "Inlines" und "Protos" wiederholt, aber geändert hat sich nichts. Gruß Stefan -- Rechtschreibfehler entstehen durch die Datenübertragung und sind vom Autor nicht zu beeinflussen [ - Antworten - Zitieren - Direktlink - ] |
12.02.2006, 11:39 Uhr whose Posts: 2156 Nutzer |
Zitat: Ja, das liegt an der reaction.lib. Die Version von der Seite von S.R. ist für den StormC4 gedacht, welcher ein anderes Format für die Compiler-Bobliotheken verwendet als der Standard-GCC. Freundlicherweise gibts aber die Quellen zur lib dazu, also müßtest Du diese einmal mit dem Standard-GCC compilieren und die entstehende lib als Ersatz verwenden, dann sollten ReAction-Programme auch vom Standard-GCC einwandfrei übersetzt werden. Grüße -- --- µA1 PPC 750GX-800 A4000 PPC 604e-233 [ - Antworten - Zitieren - Direktlink - ] |
14.02.2006, 10:57 Uhr Stefan Posts: 936 Nutzer |
Zitat: Hallo, Die reaction.lib kriege ich nicht kompiliert, aber dafür funktionieren jetzt einige der Examples (1), nachdem ich festgestellt hatte, dass es anscheinend verschiedene Versionen vom NDK gibt. So fehlte das "listbrowser.h" aus "include/include_h/gadgets". Desweiteren gibt es Unterschiede in "include/fd" bei der Datei "hdwrench.fd" sowie in "include_h/graphics" bei der Datei "gfxmacros.h". Festgestellt habe ich die Unterschiede, weil ich mir auch das "Cubic-IDE" geladen hatte. Warum gibt diese Unterschiede, obwohl alle Archive NDK_3.9 heissen? Anders gefragt, gibt es verschiedene Archive? gfx.macros.h "alt 4075 byte 17-01-01" "neu 3974 byte 19-11-02" hdwrench.fd "alt 1002 byte 04-08-99" "neu 966 byte 14-11-02" (1) anscheinend ohne reaction.lib Fehlermeldungen bei der reaction.lib ------------------------------------ reactionlib.c: In function 'RefreshSetPageGadgetAttrsA': reactionlib.c:459: parse error before 'ULONG' reactionlib.c:461: '_RefreshPageGadget_v1' undeclared (first use in this function) reactionlib.c:461: (Each undeclared identifier is reported only once reactionlib.c:461: for each function it appears in.) reactionlib.c:461: '_RefreshPageGadget_v2' undeclared (first use in this function) reactionlib.c:461: '_RefreshPageGadget_v3' undeclared (first use in this function) reactionlib.c:461: '_RefreshPageGadget_v4' undeclared (first use in this function) reactionlib.c: At top level: reactionlib.c:461: parse error before ')' Gruß Stefan -- Rechtschreibfehler entstehen durch die Datenübertragung und sind vom Autor nicht zu beeinflussen [ - Antworten - Zitieren - Direktlink - ] |
14.02.2006, 12:18 Uhr Holger Posts: 8116 Nutzer |
Zitat: Aus welchen Quellen stammen denn Deine? mfg -- Good coders do not comment. What was hard to write should be hard to read too. [ - Antworten - Zitieren - Direktlink - ] |
14.02.2006, 15:13 Uhr Stefan Posts: 936 Nutzer |
Zitat: So genau weiss ich das nicht mehr, hier liegen mehrere Archive vom NDK auf der Platte rum. Die neuen Dateien stammen aus dem Paket von http://dietmar-eilert.net/cubic/locations.htm Dazu finde ich noch http://mazze-online.de/amiga/tipps.html | Um die Reaction-Beispiele aus dem NDK3.9 kompilieren zu können, | muss in graphics/gfxmacros.h zwei mal der Eintrag | #define GetOutlinePen(rp) GetOPen(rp) entfernt werden. Ein daraufhin gemachtes "diff" ergibt. #define GetOPen(rp) GetOutlinePen(rp) --- #define GetOutlinePen(rp) GetOPen(rp) 117a118,121 /* synonym for GetOPen for consistency with SetOutlinePen */ #define GetOutlinePen(rp) GetOPen(rp) Die Ausgabe bei "hdwrech.fd" lege ich mal hierher, wegen der Länge. diff-hdwrench.fd --> http://tinyurl.com/dyrfv Gruß Stefan [ - Antworten - Zitieren - Direktlink - ] |
14.02.2006, 16:07 Uhr whose Posts: 2156 Nutzer |
@Stefan: Ah so, dann waren die ersten Fehlermeldungen wohl auf verhackstückte Includes zurückzuführen... Ok, die Includes von CubicIDE sind im Groben schon fehlerfrei, allerdings gibts hier und da ein paar Ausreißer. Unter anderem die Doppeldefinition im Zusammenhang mit GetOutlinePen(). Da sind aber noch ein paar mehr, unter anderem in den proto/....h-Dateien. Einer der Fehler, die Du hier gepostet hast (da kommt u.A. die schließende Klammer drin vor), läßt auf ein vergessenes schließen (möglich ist auch eine fehlerhafte Definition von Funktionen mit VarArg-Taglisten), allerdings weiß ich nicht mehr, in welchen Dateien diese Fehler vorkamen (ich habe alle Includes durchforstet und die Fehler behoben, soweit ich sie finden konnte. Diffs habe ich nie gemacht). Schau Dir die betreffenden Includes einmal näher an, evtl. ists so ein relativ simpler Fehler. Grüße -- --- µA1 PPC 750GX-800 A4000 PPC 604e-233 [ - Antworten - Zitieren - Direktlink - ] |
14.02.2006, 16:29 Uhr Dietmar Posts: 166 Nutzer |
@whose: > Ok, die Includes von CubicIDE sind im Groben schon fehlerfrei, allerdings gibts hier und da ein paar Ausreißer Die "Includes von Cubic IDE" sind, was OS3 betrifft, das offizielle AmigaOS 3.9 NDK (so wie es von Amiga Inc. angeboten wurde). Ich glaube nicht, dass es dabei irgendwelche Variationen gab. Die protos/inlines werden während der Installation durch fd2pragma erzeugt. Ob fd2pragama das für gcc fehlerfrei macht, weiss ich nicht, da ich selber gcc nicht verwende. fd2pragma kann mehrere Typen von protos/inlines erzeugen. Ich habe mich nach dem Zufallsprinzip für einen Typ entschieden. Wenn es Probleme damit geben sollte, könnte man einen anderen Typ verwenden: Im Installationsverzeichnis von devkits (im Ordner "devkits/" im C++ Add-On-Archiv) gibt es das Script "fd2pragma.bat". Mit dem Parameter SPECIAL/N wird für fd2pragma das Format der protos/inlines ausgewählt, z.B. special=40. Welche anderen Möglichkeiten es neben dem Format "40" gibt, steht in devkits/contributions/fd2pragma/fd2pragma.guide: 40 - GCC inline file (preprocessor based) 41 - GCC inline file (old type - inline based) 42 - GCC inline file (library stubs) 43 - GCC inline file (new style - macro) 44 - GCC inline file (new style - inline) 45 - GCC inline file (new style - inline with include lines) 46 - GCC inline file (preprocessor based, direct) 47 - GCC inline file (new style, direct) [ - Antworten - Zitieren - Direktlink - ] |
14.02.2006, 17:20 Uhr Stefan Posts: 936 Nutzer |
Zitat: Nun deswegen habe ich danach gefragt, weil eben einzelne Dateien aus dem Archiv von deinen Paketen andere Größen und Datumswerte aufweisen. Im Ordner include/include_h haben alle Dateien das Datum vom 17-12-01 bzw. 21-12-01. Beim NDK welches ich von deiner Seite habe, gibt es (s.auch oben) Dateien, welche ein anderes Datum und Größe haben. gfxmacros.h - 19-11-02, hdwrench.fd - 14-11-02 Zudem habe ich hier wohl noch ein Archiv, leider weiss ich nicht mehr woher, wo besagte "listbrowser.h" fehlt. Da ich hier völlig am Anfang stehe, das erst nach ein paar Tagen durchschaute und gemerkt hatte, dass ich verschiedene Archive habe. Jetzt sind zumindest ein paar der Fehlermeldungen verschwunden. Gruß Stefan [ Dieser Beitrag wurde von Stefan am 14.02.2006 um 17:22 Uhr geändert. ] [ - Antworten - Zitieren - Direktlink - ] |
14.02.2006, 17:52 Uhr whose Posts: 2156 Nutzer |
@Dietmar: Nun, Variationen gabs da schon, allerdings liegen die sehr lange zurück. Die erste Fassung des NDK enthielt noch einige Fehler im Zusammenhang mit dem GCC und war auch zum Download erhältlich. Zwischendurch geisterten auch inoffizielle Fassungen im Netz herum (allerdings nicht auf den offiziellen Downloadseite). Jetzt weiß man natürlich nicht, was Stephan da alles zusammengemixt hat. @Stephan: Installier das NDK nochmal sauber, also die CubicIDE-Fassung. Probier danach nochmal einen Compilerlauf. Die allermeisten Fehler, die jetzt noch auftreten, sind Fehler wie ein vergessenes bei den proto/...h macros und nicht ganz korrekte Definitionen der VarArg-Taglist-Funktionen. Die meisten ReAction-Beispiele sollten nach der sauberen NDK-Installation aber einwandfrei durchkompiliert werden. In Deinem Fall hat es also nichts mit der reaction.lib zu tun, da Du die Beispiele des NDK bzw. aus dem Aminet compilierst (diese kommen ohne die reaction.lib aus). Sollten immer noch Fehler auftreten, dann mail mir bitte übers Forum und hänge dann später die entsprechende Include-Datei an, dann kann ich Dir evtl. sagen, wo der Fehler steckt. Grüße -- --- µA1 PPC 750GX-800 A4000 PPC 604e-233 [ - Antworten - Zitieren - Direktlink - ] |
14.02.2006, 20:04 Uhr Dietmar Posts: 166 Nutzer |
@whose: > sind Fehler wie ein vergessenes bei den proto/...h macros und nicht ganz korrekte Definitionen der VarArg-Taglist-Funktionen. Diese Teile (pragmas, proto, inlines) kommen bei einer Cubic-Installation nicht aus dem NDK sondern von fd2pragma: Sie werden aus den sfd-Dateien erzeugt. Die proto-Dateien im NDK werden nicht installiert. Deshalb sind vergessene "" unwahrscheinlich: das sind alles Maschinen-erzeugte Dateien. Wenn Stefan eine Cubic- bzw. devkits-Installation durchgeführt hat (und das NDK nicht nur herauskopiert hat), dann ist es normal, dass er am Ende andere Dateien erhält. [ - Antworten - Zitieren - Direktlink - ] |
15.02.2006, 17:30 Uhr Mazze Posts: 263 Nutzer |
Zitat: Huch Hier ist der komplette Thread, aus dem ich die Information hatte: Klick -- Anruf beim Notarzt: Mein Hirsch ist geplatzt. Notarzt: Dann nehmen s' halt a Ross. Meine Homepage [ - Antworten - Zitieren - Direktlink - ] |
20.02.2006, 17:42 Uhr Stefan Posts: 936 Nutzer |
Zitat: Danke für den Link zum Thread. Danke auch für die anderen Hinweise. Bin mangels Zeit noch nicht viel weiter gekommen, habe nur die Scripte hier angepasst und die inlines, protos noch mal aus den sfd-Dateien erzeugt. Kurztest nur mit den Reaction-Examples aus dem NDK --> passt Gruß Stefan [ - Antworten - Zitieren - Direktlink - ] |
-1- | [ - Beitrag schreiben - ] |
amiga-news.de Forum > Programmierung > GCC und NDK_3.9-Examples | [ - Suche - Neue Beiträge - Registrieren - Login - ] |
Impressum |
Datenschutzerklärung |
Netiquette |
Werbung |
Kontakt
Copyright © 1998-2024 by amiga-news.de - alle Rechte vorbehalten. |