Compilieren bei oopo's Toolchain


Pliskin

Member
Joined
Apr 29, 2006
Messages
430
Location
Rüsselsheim
LOCATION
Rüsselsheim
Aufgrund des GBAX2007 Contest ist bei mir die lust zum programmieren extrem gestigen.
Also werde ich euch so lange nerven bis die letzte frage beantwortet ist :p
Ich habe oopos toolchain dank elektranox's seite installieren können.
Doch ich weis net wie ich aus dem Code eine Ausführbare Datei mache.
Die Forensuche und die wiki haben mir da nicht weiterhelfen können.
Und da ich weiss das sehr viele von euch oopos toolchain verwenden,
würde ich gerne wissen wie ich das mache.
Ich weis das ich das über die konsole mache, aber ich kenne den befehl nicht :(
Könnte mir einer von euch sagen wie der befehl geht, und auch erklären was es genau heißt und welche möglichkeiten es gibt.

Gruß Pliskin

PS. Danke im voraus
 
Am besten verwendest du ein Make file in dem oben die wichtigsten
Pfade definiert werden, so kann auch jemand mit einer anderen Toolchain dein Projekt relativ einfach kompilieren.

Ich habe auch mit oops Toolchain gearbeitet, sie schien mir recht vollständig aber dennoch simpel.

Schau dir einfach mal mein Makefile an, der source des Projektes ist im Archiv verfügbar. http://archive.gp2x.de/cgi-bin/cfiles.cgi?0,0,0,0,46,1810

Das ganze ist so gebaut, dass es per define auch auf normalem Linux kompiliert.

hf, gl

Ben.
 
Auf die idee mit dem makefile bin ich noch nicht gekommen.
Gibts da irgendwo ein howto oder sowas.
Habe versucht das makefile zu verstehen leider ohne erfolg.
Als ich es ausführen wollte kamm nur das raus.
Code:
g++ -Wold-style-cast -Woverloaded-virtual -Wall -I`sdl-config --cflags` -Wall -O2 -c GP2XOfLife.cpp
/bin/sh: sdl-config: not found
GP2XOfLife.cpp:26:22: error: SDL/SDL.h: No such file or directory
GP2XOfLife.cpp:27:26: error: SDL/SDL_ttf.h: No such file or directory
Joystick.h:71: Fehler: »Uint32« bezeichnet keinen Typ
Joystick.h:72: Fehler: »Uint32« bezeichnet keinen Typ
Joystick.h:77: Fehler: »Uint32« bezeichnet keinen Typ
Joystick.h:78: Fehler: »Uint32« bezeichnet keinen Typ
Joystick.h:86: Fehler: »Uint32« wurde nicht deklariert
Joystick.h:87: Fehler: »Uint32« wurde nicht deklariert
Joystick.h:88: Fehler: »Uint32« bezeichnet keinen Typ
Joystick.h:89: Fehler: »Uint32« bezeichnet keinen Typ
Box.h:54: Fehler: expected type-specifier before »SDL_Rect«
Game.h:49: Fehler: ISO-C++ verbietet Deklaration von »SDL_Surface« ohne Typ
Game.h:49: Fehler: expected »;« before »*« token
Game.h:58: Fehler: »Uint32« bezeichnet keinen Typ
Game.h:87: Fehler: »Uint32« bezeichnet keinen Typ
WorldDisplay.h:35: Fehler: ISO-C++ verbietet Deklaration von »SDL_Surface« ohne Typ
WorldDisplay.h:35: Fehler: expected »;« before »*« token
WorldDisplay.h:50: Fehler: »Uint32« bezeichnet keinen Typ
WorldDisplay.h:56: Fehler: expected `)' before »*« token
NumberDisplay.h:34: Fehler: ISO-C++ verbietet Deklaration von »TTF_Font« ohne Typ
NumberDisplay.h:34: Fehler: expected »;« before »*« token
NumberDisplay.h:35: Fehler: »SDL_Color« bezeichnet keinen Typ
NumberDisplay.h:36: Fehler: ISO-C++ verbietet Deklaration von »SDL_Surface« ohne Typ
NumberDisplay.h:36: Fehler: expected »;« before »*« token
NumberDisplay.h:38: Fehler: ISO-C++ verbietet Deklaration von »SDL_Surface« ohne Typ
NumberDisplay.h:38: Fehler: expected »;« before »*« token
NumberDisplay.h:46: Fehler: expected `)' before »*« token
make: *** [GP2XOfLife.o] Fehler 1

Irgenwas läuft da was nicht richtig, aber was?
 
also ich kenn zwar jetzt dieses sdk nicht, aber der fehler ist, dass sdl-config nicht gefunden wird. such mal wo es rumliegt (vermutlich unter /pfad/zum/sdk/bin ) und gib dann den vollen pfad zu sdl-config mit an

oder alternativ nimm das entsprechende /bin verzeichnis zum PATH dazu
 
Du hast wie es aussieht versucht das Ding für deinen PC zu kompilieren. Allerdings musst du dann auch die SDL Bibliothek für den PC und die passenden Entwicklerpackete mit den Header Dateien installieren.

Wie das bei deiner Distribution geht solltest du wissen bzw. ist ja für jede Unterschiedlich.

libsdl1.2
libsdl1.2-dev
libsdl-ttf2.0-0
libsdl-ttf2.0-0-dev
libfreetype6
libfreetype6-dev

sind das bei mir.
 
@ G.o.D
Die sdl-config ist da wo sie sein sollte usr/local/gp2xdev/bin Und wie meinst du das mit den Pfad vollständig eingeben?

@ dedeibel
Jup du hattest recht. Nachdem ich die lib's draufgemacht habe, hat er mir eine .gpe ausgespuckt.
Aber ich kann sie auf dem rechner starten :huh:
Ich kenne mich leider in der Konsole nicht so top aus.
Ich bin einfach nur ins verzeichnis gegangen und habe make eingegeben.
Was muss ich noch dazuschreiben damit ich eine echt .gpe erhalte und nicht nur eine mit der endung .gpe.
 
In der Makefile wird durch die Variable TARGET_GP2X unterschieden.

Du musst zumindest die Variable GP2XDEV auf den richtigen Pfad setzen, der Rest sollte klappen, falls sie die toolchain mittlerweile nicht geändert hat.

Kompilieren kannst du dann mit "make TARGET_GP2X=1" für die GP2X Version.
 
HAH! Jetzt tut sich was.
Code:
 Linking GP2XOfLife.gpe ...
/usr/local/gp2xdev/bin/gp2x-g++ -o GP2XOfLife.gpe GP2XOfLife.o Game.o World.o Joystick.o GPJoystick.o Keyboard.o Menu.o WorldDisplay.o NumberDisplay.o -static -L/usr/local/gp2xdev/lib `/usr/local/gp2xdev/bin/sdl-config --libs` -lSDL_ttf -lfreetype -lSDL
/usr/local/gp2xdev/lib/gcc/gp2x/4.0.2/../../../../gp2x/bin/ld: GP2XOfLife.o: Relocations in generic ELF (EM: 3)
GP2XOfLife.o: could not read symbols: File in wrong format
collect2: ld returned 1 exit status
make: *** [GP2XOfLife.gpe] Fehler 1
Anscheinend kann er die Ojekt-Dateien nicht öffnen.
Wenn ich die GP2XOfLife.o Versuche mit gedit zu öffnen, kommt nichts dabei raus.
Und nicht nur bei der GP2XOfLife.o Datei sondern auch bei allen anderen Objekt-Dateien
Das versteh ich nicht. Für den PC hat er es ohne Probleme Compiliert.
Was läuft da anders :(

EDIT: Hab jetzt alle .o Dateien gelöscht. Die sind ja beim Compilieren von der PC Version entstanden.
Leider ist immer noch ein fehler drin :wacko:
Code:
/usr/local/gp2xdev/bin/gp2x-g++ -Wold-style-cast -Woverloaded-virtual -Wall -I"/usr/local/gp2xdev/include" `/usr/local/gp2xdev/bin/sdl-config --cflags` -DTARGET_GP2X -msoft-float -O2 -fomit-frame-pointer -ffast-math -funroll-loops -c GP2XOfLife.cpp
GP2XOfLife.cpp:27:26: error: SDL/SDL_ttf.h: No such file or directory
NumberDisplay.h:34: error: ISO C++ forbids declaration of 'TTF_Font' with no type
NumberDisplay.h:34: error: expected ';' before '*' token
make: *** [GP2XOfLife.o] Fehler 1
Jetzt wollen die Fonts nicht. So wie ich verstanden habe fehlt mir ne header.
Wo krieg ich die her?
 
Wie gesagt, bei mir heißen die Pakete

libsdl-ttf2.0-0
libsdl-ttf2.0-0-dev

schau mal ob du bei dir etwas ähnliches finden kannst.

Viel Erfolg!

P.S. mit "make clean" wird automatisch alles bereinigt. Musst nicht manuell .o löschen.
 
so jetzt hats geklappt. :)
Anscheinen hat mir eine lib und eine header gefehlt. libSDL_ttf und SDL_ttf.h
Gibt's da irgendwo ein arhiv, oder eine sammlung wo allen lib's für C/C++ und SDL vorhanden sind?

Ich weis nicht ob es für den anfang so gut wäre schon mit Makefiles rumzuhantieren.
Vielleicht sollte ich es doch erstmal über Konsole machen.

Gibt es da irgendwo eine bechreibung oder sowas wie ich eine Makefile erstelle.
Und in welcher Sprache sind die geschrieben.
Ich will nicht jedesmal einfach das makefile für jedes Programm zurechtschreiben ohne zu wissen was ich da grad tuhe.
 
Ich würde behaupten es gibt zu viele Libs um sie in eine Liste zu packen ^^

Aber da du für den gp2x entwickeln willst wäre die Liste der Libs in oops toolchain nicht verkehrt, die anderen bringen dir erstmal sowieso nichts. Im wiki steht vielleicht was darüber.

Fang lieber gleich damit an, für eine Datei ists ja noch okay aber sobald es mehr werden --> Makefile.

http://www.gnu.org/software/make/manual/
http://www.wlug.org.nz/MakefileHowto

Ist vielleicht etwas verwirrend am Anfang aber mit der Zeit gewöhnt man sich an Makefiles.
 
Ich werd mal versuchen mich da erstmal einzuarbeiten.

Danke nochmal für all die antworten ^_^

Gruss Pliskin
 
Back
Top