topics/6-126703-tutocompilation-des-outils-de-developpement-crosstool-ng-151
Development Kit "Almost From Scratch" pour la GP2X Wiz — Librairie SDL

Les informations de départ
—La librairie SDL
http://www.libsdl.org/
—Un exemple de programme pour le test
http://wiki.gp2x.org/wiki/Writing_an_SDL_Hello_World
————————Préparation de l'environnement————————
Variables d'environnement
Dans le cadre du précédent tutorial, on dispose d'une variable d'environnement pour désigner le répertoires d'installation de nos outils de développement : $WIZ_HOME. On va mettre à jour nos variables $PATH, $LDFLAGS et $CPPFLAGS.
export PATH="${WIZ_HOME}/bin:${PATH}" export LDFLAGS="-L${WIZ_HOME}/lib" export CPPFLAGS="-I${WIZ_HOME}/include"
Préfixe des exécutable des outils de développement
Dans le cadre du précédent tutorial, le tuple de la plateforme, qui préfixe le nom de tous nos outils de développemement, est : arm-gp2xwiz-linux-gnu
Pour s'assurer que la librairie est bien construite avec notre version de ar et ranlib, on redéfinit les variables correspondantes :
export AR="arm-gp2xwiz-linux-gnu-ar" export RANLIB="arm-gp2xwiz-linux-gnu-ranlib"
————————Construction de la librairie SDL————————
Téléchargement
—On utilise les sources de la version stable 1.2, disponibles ici :
http://www.libsdl.org/download-1.2.php
—Décompresser l'archive dans un répertoire de travail
Compilation et installation
—Vérifier que nos outils de compilation sont disponibles : par exemple, invoquer arm-gp2xwiz-linux-gnu-gcc. Si le système ne trouve pas cet exécutable, mettez à jour votre variable d'environnement $PATH comme expliqué plus haut.
—Invoquer le script configure avec les options de cross-compilation (pour rappel, l'option --help permet de connaitre toutes les options disponible).
./configure --prefix=$WIZ_HOME --host=arm-gp2xwiz-linux-gnu --target=arm-gp2xwiz-linux-gnu
—Invoquer make pour la compilation et l'installation. Normalement la compilation doit se terminer sans erreur.
make make install
————————Test de la librairie SDL————————
Il est temps de tester, on va utiliser un petit programme qui charge une image et l'affiche, attend un peu, et se termine.
hellosdl.c
#include <unistd.h> #include "SDL.h" #define SCREEN_WIDTH 320 #define SCREEN_HEIGHT 240 #define SCREEN_DEPTH 8 int main(int argc, char **argv) { SDL_Surface *screen; SDL_Surface *bmp; SDL_Rect targetarea; /* Initialize SDL */ SDL_Init(SDL_INIT_VIDEO); /* Initialize the screen / window */ screen = SDL_SetVideoMode(SCREEN_WIDTH, SCREEN_HEIGHT, SCREEN_DEPTH, SDL_SWSURFACE); /* Load test.bmp */ bmp = SDL_LoadBMP("test.bmp"); /* Draw the image to 10, 20 */ targetarea.x = 0; targetarea.y = 20; targetarea.w = bmp->w; targetarea.h = bmp->h; /* update the screen (aka double buffering) */ SDL_BlitSurface(bmp, NULL, screen, &targetarea); SDL_Flip(screen); sleep(2); // retour au menu. // source : http://wiki.gp2x.org/wiki/Source_code_to_a_Demo_Program chdir("/usr/gp2x"); execl("/usr/gp2x/gp2xmenu", "/usr/gp2x/gp2xmenu", NULL); return 0; }
test.bmp

Compilation
Pour que le processus aille jusqu'au bout, il faut indiquer les chemins des includes et des librairies.
arm-gp2xwiz-linux-gnu-gcc -I $WIZ_HOME/include/SDL -L $WIZ_HOME/lib -lSDL -o hellosdl.wiz.gpe hellosdl.c
Test
—Transférer hellosdl.wiz.gpe et test.bmp dans un dossier, que vous copiez ensuite sur la carte mémoire de la wiz
—Dans le menu du launcher, choisir l'option "launcher", puis explorer la carte mémoire pour retrouver votre dossier et lancer le programme : vous devez voir l'image s'afficher, puis revenir au menu principale de la wiz.
En prime, une petite vidéo qui montre le résultat que vous devriez obtenir :
http://www.youtube.com/watch?v=MM-8kpL0x4o