Mini2440 SDL GUI Programmierung: Unterschied zwischen den Versionen

Aus der Mikrocontroller.net Artikelsammlung, mit Beiträgen verschiedener Autoren (siehe Versionsgeschichte)
Wechseln zu: Navigation, Suche
Zeile 42: Zeile 42:
cd SDL_image-1.2.10
cd SDL_image-1.2.10
RANLIB=/usr/local/arm/4.3.2/bin/arm-linux-ranlib CROSS_COMPILE=arm-linux- ./configure --host=arm-linux \
RANLIB=/usr/local/arm/4.3.2/bin/arm-linux-ranlib CROSS_COMPILE=arm-linux- ./configure --host=arm-linux \
--prefix=/usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/ \  
--prefix=/usr/local/arm/4.3.2/ \  
--enable-gif --enable-jpg --enable-bmp
--enable-gif --enable-jpg --enable-bmp
***HACK*** (siehe Text unter diesem Kasten)
***HACK*** (siehe Text unter diesem Kasten)

Version vom 6. Mai 2011, 22:31 Uhr

Wer ein kleines Linuxboard mit Display hat, möchte sicher nicht nur die Kernelausgaben auf der Framebuffer-Konsole ansehen oder sich für die
popligsten Anwendungen einen X-Server+Window Manager installieren, sich eine Anwendung schreiben und dann erst loslegen können.

Viel einfacher geht es in einigen Fällen mit SDL. Dieser Artikel beschreibt die Einrichtung einer Cross-Toolchain mit SDL-Support für
das Mini2440. Die unterschiede von Board zu Board sind meist sehr gering, was die Display-Ausgabe angeht. Daher lässt sich dieser Artikel
auch für einige andere Boards verwenden.

Hier ein Screenshot von einem meiner SDL-Programme:
Mini2440 sdl menu screenshot.png

Die Vorraussetzungen hierfür sind:

Einrichten der Cross-Toolchain

Ich gehe davon aus, dass man alle kommenden Schritte als "normaler" User erledigt. Sämtliche Schritte, die als "root" erledigt werden müssen,
wird ein "sudo" vorangestellt. Wenn das bei dir anders gehen sollte (z.B. su -c '...'), dann ändere es für dich!

libsdl

cd ~
wget http://www.libsdl.org/release/SDL-1.2.14.tar.gz
tar xvfz SDL-1.2.14.tar.gz
cd SDL-1.2.14
RANLIB=/usr/local/arm/4.3.2/bin/arm-linux-ranlib CROSS_COMPILE=arm-linux- ./configure --host=arm-linux \ 
--prefix=/usr/local/arm/4.3.2/ \ 
--enable-input-tslib --enable-video-fbcon --disable-audio --disable-video-x11 --disable-video-directfb
time make
sudo time make install

Diese Schritte dauerten bei mir ca 5 Minuten.

Nun lassen sich schon die ersten Programme mittels SDL compilieren. Allerdings fehlen noch zusätzliche libs, wie z.B. sdl_gfx und sdl_image
um Grafiken, Texte und Bilder anzeigen zu können. SDL alleine steht da ein wenig auf dem Schlauch.

Einen Haken hat die Sache noch. Dadurch, dass SDL in seinem Audio-Code auch Assembler verwendet habe ich es noch nicht hinbekommen,
SDL mit ALSA oder OSS Support zu compilieren. Wer dazu einen Tip hat, immer her damit :)

libsdl_image

Mit dieser lib lassen sich recht einfach Bilder laden und anzeigen.

cd ~
wget http://www.libsdl.org/projects/SDL_image/release/SDL_image-1.2.10.tar.gz
tar xvfz SDL_image-1.2.10.tar.gz
cd SDL_image-1.2.10
RANLIB=/usr/local/arm/4.3.2/bin/arm-linux-ranlib CROSS_COMPILE=arm-linux- ./configure --host=arm-linux \
--prefix=/usr/local/arm/4.3.2/ \ 
--enable-gif --enable-jpg --enable-bmp
***HACK*** (siehe Text unter diesem Kasten)
sudo ln -s /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/usr/lib/libts.la /usr/local/lib/libts.la
sudo ln -s /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/usr/lib/libts.so /usr/local/lib/libts.so
***/HACK***
time make
sudo time make install

Anmerkungen zum "Hack". Beim compilieren spuckt mir SDL_image einen Fehler aus. Es sagt mir, dass er in /usr/local/lib/ die tslib nicht finden kann. Dort hat er aber nichts zu suchen, da dies kein Pfad zum Cross-Compiling ist. Wie ich das abstelle, habe ich noch nicht herausgefunden, also habe ich einfach einen symbolischen Link angelegt.

libsdl_gfx

Diese lib stellt einen Haufen Grafikfuntkionen bereit, wie Polygone, Rechtecke, Kreise, Linien, ... Ausserdem beinhaltet sie eine Textausgabe und Funktionen um Surfaces zu rotieren und zu zoomen.

cd ~
wget http://www.ferzkopp.net/Software/SDL_gfx-2.0/SDL_gfx-2.0.21.tar.gz
tar xvfz SDL_gfx-2.0.21.tar.gz
cd SDL_gfx-2.0.21
RANLIB=/usr/local/arm/4.3.2/bin/arm-linux-ranlib CROSS_COMPILE=arm-linux- ./configure --host=arm-linux \
--prefix=/usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/ --disable-mmx
time make
sudo make install