amiga-news 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

:boing:

--
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:
Original von Stefan:


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. ;(


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

--
---

:boing: µA1 PPC 750GX-800
:boing: A4000 PPC 604e-233

[ - Antworten - Zitieren - Direktlink - ]

14.02.2006, 10:57 Uhr

Stefan
Posts: 936
Nutzer
Zitat:
Original von whose:
Zitat:
Original von Stefan:

> [reaction.lib]
> [Ersatz reaction.lib]


[...]
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.


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

:boing:

--
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:
Original von Stefan:
Warum gibt diese Unterschiede, obwohl alle Archive NDK_3.9 heissen? Anders gefragt, gibt es verschiedene Archive?


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:
Original von Holger:
Zitat:
Original von Stefan:
Warum gibt diese Unterschiede, obwohl alle Archive NDK_3.9 heissen? Anders gefragt, gibt es verschiedene Archive?


Aus welchen Quellen stammen denn Deine?


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

:boing:

[ - 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

--
---

:boing: µA1 PPC 750GX-800
:boing: 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:
Original von Dietmar:
@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.


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

:boing:



[ 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

--
---

:boing: µA1 PPC 750GX-800
:boing: 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:
Original von Stefan:

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.


Huch :D

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:
Original von Mazze:
Zitat:
Original von Stefan:

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.


Huch :D

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


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

:boing:



[ - 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.
.