LibSDL und CrossCompiler

Hier geht es um Fragen bezüglich der Anwender-Software, die auf Openmoko läuft.

LibSDL und CrossCompiler

Beitragvon backbone am Fr 23. Jan 2009, 11:26

Hi,

Ich versuchen nun schon seit einigen tagen ein programm für den freerunner zu kompilieren.
es ist einfach nur ein kleines testprogramm das mittels libsdl ein bild anzeigt und eine linie zeichnet.
auf meinem standrechner funktioniert das programm problemlos. ich kompiliere es einfach mit gcc:
Code: Alles auswählen
gcc -g -Wall `sdl-config --cflags` `sdl-config --libs` -lSDL_image -o sdltest sdltest.c


soweit so gut. wenn ich das jetzt für den freerunner kompilieren möchte wirds aber kompliziert.
ich verwende dazu also einfach die toolchain von openmoko kopiere meine src files in das src verzeichnes des sample-programms und änder im Makefile.am den eintrag
Code: Alles auswählen
openmoko_sample2_LDADD = @DEPENDENCIES_LIBS@

auf
Code: Alles auswählen
openmoko_sample2_LDADD = @DEPENDENCIES_LIBS@ -Wall `sdl-config --cflags` `sdl-config --libs` -lSDL_image

wenn ich jetzt das ipkg daraus erstelle kommt die fehlermeldung das die LIBSDL.so inkompatibel ist (ich denk mal das liegt daran da das ja die für meinen standpc ist und nicht für den Freerunner funktioniert).

Jetzt weis ich nicht mehr weiter :(
muss ich die libsdl selbst kompilieren für den ARMV prozessor?
Oder ist mein gesamter Ansatz Falsch und es geht irgendwie einfacher?
Kennt vielleicht jemand ein tutorial in dem beschrieben wird wie soetwas funktioniert?

Danke
backbone
 
Beiträge: 2
Registriert: Do 22. Jan 2009, 16:20

Re: LibSDL und CrossCompiler

Beitragvon trurl23 am Fr 23. Jan 2009, 11:28

Hallo,

wie Du schon vermutet hast, brauchst Du eine passende libSDL in Deiner Toolchain. Da bleibt Dir wohl nix anderes übrig, als selbst Hand anzulegen. :shock:
Hol Dir die sourcen von libsdl.org, entpacke Sie.
Dann "sourced" Du das script der toolchain, um die entsprechenden Umgebungsvariablen zu setzen (normalerweise brauchst Du nix im Makefile ändern, wenn du ein autotools basiertes Projekt hast).
:!: Dabei ist das Leerzeichen zwischen . und /usr/local/... wichtig!
Code: Alles auswählen
. /usr/local/openmoko/arm/setup-env

Im SDL source Verzeichnis konfigurieren mit folgender Zeile (Dabei gehe ich davon aus, dass Du die standard toolchain von OpenMoko verwendest, die unter /usr/local/openmoko liegt).
Code: Alles auswählen
./configure --prefix=/usr/local/openmoko/arm/usr --host=arm-linux

Dann nur noch das übliche
Code: Alles auswählen
make

Und als root wieder
Code: Alles auswählen
. /usr/local/openmoko/arm/setup-env

Und danach schließlich
Code: Alles auswählen
make install

:arrow: Dann solltest Du ein für arm kompiliertes SDL in Deiner Toolchain haben.

Wenn Du nun ein SDL-Programm cross-compilieren möchtest, solltest Du beim configure z.B. angeben:
Code: Alles auswählen
./configure --with-sdl-prefix=/usr/local/openmoko/arm/usr

Damit dann Dein Makefile auch das richtige sdl-config benutzt und die Pfade für die Bibliotheken alle stimmen.
Bitte immer daran denken, vorher wie oben beschrieben das setup-env Skript der Toolchain einzubinden.
Ich musste allerdings in meinem Programm sdl nicht mit #include <SDL/SDL.h>, sondern nur als #include <SDL.h> einbinden, aber das mag an der IDE liegen, mit der ich das Projekt erzeugt habe.

Auf dem Moko solltest Du dann noch mittels
Code: Alles auswählen
opkg install libsdl-1.2-0

Das libsdl Paket installieren (getestet unter OM2008.8, geht aber wahrscheinlich analog auf OM2007.2).

Viel Spaß und viele Grüße
Trurl
trurl23
 
Beiträge: 4
Registriert: Mi 21. Jan 2009, 12:21

Re: LibSDL und CrossCompiler

Beitragvon backbone am Fr 23. Jan 2009, 11:30

Hallo,

Herzlichen Dank für die ausführliche und gut verständliche Anleitung.
Damit habs sogar ich hinbekommen.

Backbone
backbone
 
Beiträge: 2
Registriert: Do 22. Jan 2009, 16:20


Zurück zu Die Software - Anwendungen

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

cron