GP2X-Programmierung mit DevkitGP2X


BestNrXYZ

Member
Joined
Nov 17, 2005
Messages
372
Location
Oberhausen
LOCATION
Oberhausen
So...

da das mit DEVcpp nicht funktioniert hat, habe ich mal nach dem GP2X User Guide V. 1.1, Seite 33 eine andere Umgebung installiert (siehe Betreff). Wenn man sich nicht an die bei der Installation vorgegebenen Pfade hält, muss man beim anschließenden "make" der demo.c schon mal das Makefile anpassen.

Es läuft auf jeden Fall erst mal. Die Demo wird fehlerfrei kompiliert und die demo.gpe wird ohne Probleme auf dem GP2X ausgeführt.

Jetzt muss ich mich nur noch mit Makefile und Co. für andere Projekte beschäftigen, da ich es bisher nur mit IDEs zu tun hatte.

NuJa, das Makefile der demo.rar ist ja schon mal eine Basis, auf der man aufbauen kann.

Oder gibt es da gute Anlaufstellen im 3xW?

Greetz
BNrXYZ
 
Danke für die Links

<t>Und mit der neuen Dev-Umgebung funzen auch die Beispiele von DEVcpp 8) <br/>
<br/>
Greetz<br/>
BNrXYZ</t>
 
Hi SirDzstic,
SirDzstic said:
Dev C++ ist ja auch nur ein Frontend für das GNU Build System.

Ist mir bekannt, deshalb vermute ich auch, dass ich irgendwas in DEVcpp falsch konfiguriert habe, da die damit erzeugten *.gpe's nicht laufen. Nur ich finde keinen Fehler, bin es schon 3 * durchgegangen....

Gruß
und Frohes Fest

BNrXYZ
 
Des Rätsels Lösung

<r>Ich habe mir mal die Ausgaben von DEVcpp und dem Konsolen-make angeschaut und dabei festgestellt, dass:<br/>
<br/>
DEVcpp:
<CODE><s>
Code:
</s><i>
</i>arm-linux-g++.exe demo.o  -o "demo.gpe" -L"C:/devkitGP2X/lib" -lSDLmain -lSDL
<e>
</e></CODE>

make:
<CODE><s>
Code:
</s><i>
</i>arm-linux-g++.exe demo.o  -static -o "demo.gpe" -L"C:/devkitGP2X/lib" -lSDLmain -lSDL
<e>
</e></CODE>

ausgeben. Der Unterschied liegt an dem <B><s></s>-static<e></e></B><br/>
<br/>
Nachdem ich diesen Parameter in DEVcpp unter Projektoptionen/Parameter/Linker nach dem <I><s></s>-lSDLmain -lSDL<e></e></I> eingefügt habe, klappt es auch mit den SDL-Test-Proggies. Die *.gpe-Datei wird dadurch um ca. 500 KB größer (ist auch verständlich, da SDL statisch eingebunden wird).<br/>
<br/>
Habe ich jetzt die SDL-Libs auf dem GP2X doch nicht richtig installiert, oder muss ich diese immer statisch linken?<br/>
<br/>
Gruß<br/>
BNrXYZ</r>
 
Bleibt die Frage...

<t>... wofür oder weshalb man die SDL-Libs auf dem GP2X installieren soll/muss? Und warum steht das nicht in der Anleitung zu DEVcpp?<br/>
<br/>
Für Aufklärung dankbar.<br/>
<br/>
Greetz<br/>
BNrXYZ</t>
 
hm, ich stehe gerade vor einem sehr ähnlichem problem wie der threadersteller.

ich habe mein devkitgp2x entpackt und die sdl-dateien aus der datei theoddbot-libs-open2x-soft-float-beta2.tar.gz, wie in dem gp2xuserguide beschrieben, in das devkitgpx verzeichnis kopiert/überschrieben.

dann habe ich noch die "arm-linux-sdl-config" ind das \bin verzeichnis kopiert (und vorher den pfad korrigiert).

dann habe ich DevCpp wie hier (http://wiki.gp2x.org/wiki/Using_Devcpp) beschrieben konfiguriert.

sobald ich jetzt jedoch ein project compilieren will, komt als erster fehler "C:\devkitpro\devkitGP2X\projects\devcpp_test\sdltest.cpp SDL.h: No such file or directory."

und ich habe unter project->project options den compiler auf meine gp2x settings gestellt und bei parameter
-lSDLmain
-lSDL
-static
stehen. das -static hat leider nichts verändert.
kann es sein, dass es irgendwie an der "arm-linux-sdl-config"-datei liegt? den pfad in der dritten zeile habe ich korrigiert. aber es macht auch keinen unterschied, ob die datei da ist oder nicht.

ich bin etwas verwirrt und über tips dankbar.


edit:
ich habe auch Visual C++ eingerichtet und beispiele mit rlyeh's minlib kann ich wunderbar kompilieren.
allerdings habe ich auch hier keine chance, SDL einzubinden.
denn bei Visual C++ weiss ich noch nicht einmal, was genau mit der "arm-linux-sdl-config"-datei gemacht wird. die scheint das ja irgendwie zu regeln...

ich habe zwar bei project->properties->gcc linker neben pthread noch SDLmain und SDL hinzugefügt, aber dasbringt auch nichts.
ich habe auch unter "additional libraries/includes" mal die pfade "c:\devkitpro\devkitgp2x\lib" und "c:\devkitpro\devkitgp2x\include\sdl" eingetragen. dann findet er zumindest die SDL.h, aber wirft nur weitere fehler aus (zum testen habe ich das sdltest von Guyfawkes genommen).
die fehler beziehen sich dann auf alle sdl-funktionen, wie zB:
"sdltest.cpp:(.text+0x24): undefined reference to `Mix_FreeChunk'"

hat jemand eine idee, wie ich SDL mit dem Visual C++ zum laufen bekomme? auch hier wäre ich für hilfe sehr dankbar.
 
Jetzt mal nicht für VisualC, aber für DEVcpp:

Hast du es schon mal mit den gp2xlibs versucht, wie in dem GP2X User Guide beschrieben? Die theoddbot-libs habe ich nicht drauf.

Greetz
BNrXYZ

Edit: Ich beziehe mich auf den GP2X User Guide 1.1. In der aktuellen Version 1.2 wird ja die Installation mit theoddbot-lib beschrieben. Geht aber genauso vonstatten mit dem Überkopieren.
 
@BestNrXYZ:
ahh, das wars natürlich! vielen dank.

was ich mich jetzt aber noch frage ist, wie kann man denn so ein SDL-programm für windows kompilieren und vor allem, was passiert, wenn man es ausführt?
die button-abfrage für den gp2x gibt es ja nicht auf einem windows pc. oder werden die button des gp2x bei einer kompilation für windows auf andere tasten der tastatur gemappt?

edit: und warum ist eigentlich ein mauszeiger in den gp2x-programmen auf position (0,0) zu sehen?
 
weil man den mauszeiger ausblendne sollte, mit der funktion
Code:
<i>
</i>SDL_ShowCursor(SDL_DISABLE);
 
Super Tip mit dem -static. Damit funzt es bei mir. Aber wieso wird das mit devcpp kompilierte Demo 100k größer als das mit dem devkit kompilierte? Sollte doch gleich sein oder?
 
Wenn ich den Paramter -static hinzufüge bekomme ich leider Fehler vom Linker. (Ohne -static funktioniert alles super, außer das ich die Meldung über fehlende Libs aufm Gp2x bekomme ;) )

C:\Dev-Cpp\devkitGP2X\lib\libSDL.a(SDL_syssem.o) In function `SDL_CreateSemaphore':
[Linker error] undefined reference to `sem_init'
C:\Dev-Cpp\devkitGP2X\lib\libSDL.a(SDL_syssem.o) In function `SDL_DestroySemaphore':
[Linker error] undefined reference to `sem_destroy'
etc...
C:\Dev-Cpp\devkitGP2X\lib\libSDL.a(SDL_systhread.o) In function `SDL_SYS_KillThread':
[Linker error] undefined reference to `pthread_cancel'
C:\Dokumente und Einstellungen\<censored;)>\Eigene Dateien\dev\Makefile.win [Build Error] [test.gpe] Error 1
 
Hast du die Bibliothek Pthread mit '-lpthread' mit eingebunden?
 
Back
Top