SDL auf BeagleBoard

Gast #2296023
Lesenswert?

Hi,

ich will mich ein bisschen tiefer in Linux/EmbeddedLinux einarbeiten und 
habe mir dafür ein BeagleBoard gekauft.

Allerdings macht mir das CrossCompilieren Probleme. Das obligatorische 
HelloWorld-Programm bekomme ich noch problemlos uebersetzt und 
ausgeführt.
Allerdings scheitert es schon beim nächsten Problem. Ich würde gerne 
einen Sound per SDL abspielen. Dafür versuchte ich zunächst die Lib zu 
bauen.
Dafür bin ich nach der folgenden Anleitung vorgegangen: 
http://www.crosscompile.org/static/pages/SDL.html

Mein configure-Befehl sah wiefolgt aus:

sudo ./configure --host=arm-none-linux-gnueabi 
--prefix=/opt/external_packages/sdl/1.2.13/compiled/arm-none-linux-gnuea 
bi

Der Befehl schloss auch ohne Probleme ab, ein make und anschließendes 
make install war möglich. Beim bauen meines Beispielprogrammes schlug 
das ganze allerdings fehl.

Mein Befehl:

arm-none-linux-gnueabi-gcc -Wall -O2 -mcpu=cortex-a8 -march=armv7-a 
-L/opt/external_packages/sdl/1.2.13/compiled/arm-none-linux-gnueabi/lib 
-Wl,-rpath,/opt/external_packages/sdl/1.2.13/compiled/arm-none-linux-gnu 
eabi/lib  -lSDL -lpthread 
-I/opt/external_packages/sdl/1.2.13/compiled/arm-none-linux-gnueabi/incl 
ude/SDL  -D_REENTRANT -o tut1 tut1.c

Dabei erscheint dann lediglich ein:

/opt/external_packages/sdl/1.2.13/compiled/arm-none-linux-gnueabi/lib/li 
bSDL.so:  file not recognized: File format not recognized

Ich gehe davon aus, das beim Bauen der Lib der reguläre gcc benutzt 
wurde, anstelle des eigentlich CrossCompilers 
arm-none-linux-gnueabi-gcc.

Davon lies ich mich an dieser Stelle natürlich nicht entmutigen, 
kopierte mir die Dateien (Libs und Include) einfach auf mein 
Host-System. Anschließend konnte ich meine Anwendung problemlos bauen.

arm-none-linux-gnueabi-gcc -Wall -O2 -mcpu=cortex-a8 -march=armv7-a 
-L/home/marcel/nfsmount -Wl,-rpath,/home/marcel/nfsmount -lSDL 
-I/home/marcel/nfsmount/SDL -D_REENTRANT -o tut1 tut1.c

Beim Ausführen auf dem BeagleBoard erscheint aber lediglich ein Knacken 
auf meinen Lautsprechern, zusammen mit der Ausgabe in der Konsole:

ALSA lib pcm.c:7316:(snd_pcm_recover) underrun occurred
ALSA lib pcm.c:7316:(snd_pcm_recover) underrun occurred
ALSA lib pcm.c:7316:(snd_pcm_recover) underrun occurred
ALSA lib pcm.c:7316:(snd_pcm_recover) underrun occurred
usw.

Verschiedene Wav-Dateien bzw. Konfiguration innerhalb des Programms 
lösen das Problem nicht. Die gleiche Anwendung, übersetzt auf meinem 
Hostsystem (Ubuntu, 64Bit) läuft wie gewollt.

Weiß wer weiter, wie ich a) die SDL richtig durch den CrossCompiler jage 
und b) warum das ganze nicht auf dem Target richtig läuft?
Gast #2296172
Lesenswert?

Hallo,

Ich würde dir empfehlen ein rootstock (Google mal danach) Image zu 
erzeugen. Dann kann du entweder direkt auf der Beagleboard Hardware 
kompilieren, oder per qemu auf dem Host. Das macht das Leben deutlich 
einfacher als Crosstoolchain einzurichten und zu pflegen.

Viel Erfolg,
Bernd

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren