Fr:Installer un environnement de développement (Linux)
Le principe d'un environnement de développement console est la compilation croisée : compiler du code à destination d'une architecture (la GP2X) différente de celle sur laquelle il est développé (le PC).
Sous Linux, il s'agit donc de compiler gcc pour faire de la compilation croisée] vers les processeurs ARM 9 de la gp2x, qui ne peuvent pas lire le code compilé pour un Athlon ou un Pentium. Le script d'installation utilisera ce arm-gp2x-linux-gccpour compiler les bibliothèques C/C++ de bases, spécifiquement pour la gp2x. Le code ARM généré n'est pas compatible avec un processeur x86 (Pentium/Atlhon), vous ne pourrez pas l'exécuter sur votre PC, mais seulement sur la GP2X : pour les tester sous Linux, il faut utiliser le gcc et les libraries du système.
Pour faciliter l'installation et la configuration pour Linux, plusieurs scripts d'installation sont proposés ici.
Le plus "tendance" et "moderne" d'entre eux est la toolchain du projet Open2x, cordialement conseillée !
Contents |
Open2x Apps Toolchain (très simple, "rapide", moderne)
Open2x est un projet Open Source qui vise à produire un firmware totalement ouvert pour la gp2x. Le projet fournit une chaîne d'outils complète pour le développement qui présente 2 gros avantages : on peut l'obtenir entièrement pré-compilée et le projet maintient un pack de librairies optimisées pour la GP2X (accélération matérielle du Blit SDL, rotations/zoom, etc.).
Elle est donc téléchargeable :
- soit sur le site officiel, en version précompilée : Using the toolchain (section Ready built toolchain). Attention, à cause des chemins relatifs/absolus du compilateur, il faut extraire la toolchain exactement dans /opt/open2x pour qu'elle fonctionne correctement.
- soit par le dépôt SVN, en code source (et donc dernière version) :
svn co https://open2x.svn.sourceforge.net/svnroot/open2x/trunk/toolchain-new ./
Lancez alors le script open2x-gp2x-apps.sh, en vérifiant que vous avez bien tout les paquets nécessaires (dont bison, flex, binutils, build-essential et automake). La compilation de l'ensemble prend environ 1h et le SDK est installé dans /opt/open2x.
Vous pouvez télécharger l'excellent package pré-compilé de libraries supplémentaires : Prebuilt Library Packages
... et simplement les copier dans le SDK. Le package inclue entre autre : la SDL 1.2.11, SDL_image, SDL_mixer, imlib2, libjpeg, libpng, libogg, libvorbis et libxml2. Vous pouvez aussi récupérer et compiler les sources SVN de ce package de libraries pour avoir la toute dernière version. La procédure pour tout compiler soi-même, SDK Toochain et libraries, est décrite sur le wiki anglais et vérifiée pour Ubuntu et plusieurs autres distributions : Installing Open2x.
Gp2x SDK (simple, standard)
C'est le kit officiel de développement (Gamepark Holdings Software Developer's Kit): http://dev.gp2x.com/sdk/gp2xsdk_linux.tar.gz
Le script d'installation buildgp2xtools.sh téléchargera le code source des composants (compilateur GCC, STL) puis les compilera pour la gp2x.
Pour développer, vous aurez certainement besoin de libraries supplémentaires comme la SDL, la libxml2 ou encore des libraries pour le son (ogg, mp3)... qui ne sont pas inclues dans l'installation du gp2x SDK. Pour cela, deux solutions :
- télécharger leur code source, les configurer pour la gp2x et les compiler soi-même avec arm-gp2x-linux-gcc (pas évident et très long),
- récupérer un pack de libraries pré-compilées et le copier dans le SDK en écrasant bin/, include/ et lib/ (rapide et pratique... à condition de trouver les libraries compatibles avec la version de gcc utilisée).
NOTES:
- Par défaut, tout est installé dans /gp2xsdk/Tools, à la racine de Linux. Vous pouvez le modifier dans le script buildgp2xtools.sh - ligne 2, variable PREFIX.
- Ce kit n'inclue pas d'IDE (éditeur de code source) et vous êtes libre d'utiliser l'éditeur que vous préférez.
- Le script fait appel à l'utilitaire de gestion de version Subversion qui nécessite le paquet Linux "svn" (disponible dans les paquets Ubuntu).
IMPORTANT:
Vérifiez bien que le script se termine correctement : à la compilation, une erreur peut survenir au sujet du parsing de version-info.h.
/gp2xsdk/Tools/build/gp2x/glibc/csu/version-info.h:1: error: missing terminating " character
En fait, le problème vient de l'interpréteur de shell SH, utilisé par les scripts des sources téléchargées. Le plus simple pour le résoudre est de faire une copie de sauvegarde de /bin/sh pour le remplacer temporairement par un lien symbolique vers /bin/bash. Lancez alors le script et il devrait compiler et terminer sans erreur. Rapidement, en administrateur :
mv /bin/sh /bin/sh.backup ln -s /bin/bash /bin/sh
Lancez le script. Puis pour restaurer /bin/sh :
mv /bin/sh.backup /bin/sh
GP2XDev Toolchain (efficace mais obsolète)
C'est une adaptation par OOPO de son script Perl "PS2/PSPDev" pour la GP2X. Il télécharge, patche, compile et installe les composants suivant, par défaut dans /usr/local/gp2xdev (modifiable, voir le README inclu) :
- gcc-4.0.2
- binutils-2.16.1
- glibc-2.3.5
- jpeg-6b
- libpng-1.2.8
- freetype-2.1.10
- mikmod-3.1.11
- libogg-1.1.3
- libvorbis-1.1.2
- SDL-1.2.9-paeryn
- SDL_image-1.2.4
- SDL_mixer-1.2.6
- SDL_ttf-2.0.7
- smpeg-0.4.4
- zlib-1.2.3
Il propose ainsi un environnement très complet, avec toutes les bibliothèques les plus utilisées pour développer des jeux sur gp2x. Cependant, il est désormais conseillé de privilégier la toolchain d'Open2x qui inclue les dernières versions de l'ensemble de ces libraries et plus encore, et les maintient à jour avec optimisations et compatibilité pour les deux firmware : l'original et celui d'Open2x.
Disponible ici : http://archive.gp2x.de/cgi-bin/cfiles.cgi?0,0,0,0,14,1609.
Plus d'infos sur gp32x.com.
Devkit GP2X
Ce script est une version non-officelle de devkitPro configuré pour la gp2x. Il télécharge, patche, compile et installe binutils-2.16.1(scripts de développement), gcc-4.0.2(compilateur C/C++), glibc-2.3.5(bibliothèque standard C/C++), en utilisant les outils de développement natifs de la machine. Vous pourrez alors utiliser cet environment de dévelopement pour compiler et installer des bibliothèques, ou utiliser des bibliothèques précompilées. L'ensemble sera installé par défaut dans /usr/local/devkitPro.
Disponible ici : http://archive.gp2x.de/cgi-bin/cfiles.cgi?0,1,0,0,14,1040.
Tout compiler à la main (très compliqué, super long)
Il est bien sûr possible de fabriquer son propre environnement de développement tout à la main, en réunissant tout les composants pour les compiler sur son système avec les paramètres appropriés... mais ce n'est pas évident, et très long.
Vous pouvez aussi essayer ce mini-installeur : gph_sdk_installer.sh qui récupèrera les composants de base précompilés (arm-tools.tar.gz - le compilateur/ les binutils, library.tar.gz - la GLIBC, linux-mmsp2-headers.tar.bz2 - les headers MMSP2 pour spécifier les zones mémoires sur GP2X).
Et pour réellement construire votre propre environnement GCC de A à Z : Building your own GCC environment.
Alternatives moins communes
OpenEmbedded
OpenEmbedded vise à faciliter les gros développements. Il utilise les fichier de configuration de la machine et de la distribution, et une personne connaissant bien la distribution OpenEmbedded et la GP2X, peut facilement entrer les informations requises. Cela permet aux développeurs/utilisateurs de GP2X d'utiliser les nombreux paquets déjà présents dans la distribution.
Voir le guide OpenEmbedded GP2X development environment.
Scratchbox
Scratchbox est principalement intéressant pour porter des applications vers la GP2X. Une fonctionnalité intéresasnte est de pouvoir émuler le code ARM, permettant à l'application devant être portée d'exécuter du code pendant la compilation (?) (très utile pour les softs qui utilisent autoconf en compilation croisée).
- installer Scratchbox : Obtenir Scratchbox et Installer Scratchbox.
- installer le SDK : selon le cas, suivre les instructions des sections A, B, ou C.
- s'appuyer sur GP2XDev : Télécharger et extraire le kit GP2XDev. Appliquer le patch suivant sur le makefile dans le répertoire des bibliothèques :
2,4c2,4 < PREFIX = /usr < CC = gcc < CXX = g++ --- > PREFIX = $(GP2XDEV) > CC = gp2x-gcc > CXX = gp2x-g++ 18c18 < # TARGETS += $(PREFIX)/lib/libtiff.a ## libtiff-3.8.2 --- > TARGETS += $(PREFIX)/lib/libtiff.a ## libtiff-3.8.2 30c30 < # TARGETS += $(PREFIX)/lib/libsmpeg.a ## smpeg-0.4.4 --- > TARGETS += $(PREFIX)/lib/libsmpeg.a ## smpeg-0.4.4 48c48 < $(PREFIX)/lib/libImlib2.a: $(PREFIX)/lib/libbz2.a $(PREFIX)/lib/libfreetype.a $(PREFIX)/lib/libid3tag.a $(PREFIX)/lib/libjpeg.a $(PREFIX)/lib/libpng.a $(PREFIX)/lib/libungif.a $(PREFIX)/lib/libz.a --- > $(PREFIX)/lib/libImlib2.a: $(PREFIX)/lib/libbz2.a $(PREFIX)/lib/libfreetype.a $(PREFIX)/lib/libid3tag.a $(PREFIX)/lib/libjpeg.a $(PREFIX)/lib/libpng.a $(PREFIX)/lib/libtiff.a $(PREFIX)/lib/libungif.a $(PREFIX)/lib/libz.a 75,77c75,77 < #libtiff-3.8.2: $(PREFIX)/lib/libtiff.a < #$(PREFIX)/lib/libtiff.a: < # cd libtiff-3.8.2 && $(FLAGS) ./configure --prefix='$(PREFIX)' --build=`uname -m` --host=gp2x --enable-shared --enable-static && $(FLAGS) make && $(FLAGS) make install && $(FLAGS) make clean --- > libtiff-3.8.2: $(PREFIX)/lib/libtiff.a > $(PREFIX)/lib/libtiff.a: > cd libtiff-3.8.2 && $(FLAGS) ./configure --prefix='$(PREFIX)' --build=`uname -m` --host=gp2x --enable-shared --enable-static && $(FLAGS) make && $(FLAGS) make install && $(FLAGS) make clean 112c112 < $(PREFIX)/lib/libSDL_mixer.a: $(PREFIX)/lib/libSDL.a $(PREFIX)/lib/libvorbisidec.a --- > $(PREFIX)/lib/libSDL_mixer.a: $(PREFIX)/lib/libSDL.a $(PREFIX)/lib/libsmpeg.a $(PREFIX)/lib/libvorbisidec.a 123,125c123,125 < # smpeg-0.4.4: $(PREFIX)/lib/libsmpeg.a < # $(PREFIX)/lib/libsmpeg.a: < # cd smpeg-0.4.4 && ./autogen.sh && $(FLAGS) ./configure --prefix='$(PREFIX)' --build=`uname -m` --host=gp2x --disable-gtk-player --disable-opengl-player --enable-shared --enable-static --with-sdl-prefix='$(PREFIX)' --without-x && $(FLAGS) make && $(FLAGS) make install && $(FLAGS) make clean --- > smpeg-0.4.4: $(PREFIX)/lib/libsmpeg.a > $(PREFIX)/lib/libsmpeg.a: > cd smpeg-0.4.4 && ./autogen.sh && $(FLAGS) ./configure --prefix='$(PREFIX)' --build=`uname -m` --host=gp2x --disable-gtk-player --disable-opengl-player --enable-shared --enable-static --with-sdl-prefix='$(PREFIX)' --without-x && $(FLAGS) make && $(FLAGS) make install && $(FLAGS) make clean
Démarrer Scratchbox puis appeler "make" pour compiler et installer les bibliothèques.