Toolchain/fr
From Openmoko
Pierrebrua (Talk | contribs) (→Autres articles sur des sujets connexes qui pourront vous intéresser) |
Pierrebrua (Talk | contribs) (→Autres articles sur des sujets connexes qui pourront vous intéresser) |
||
(12 intermediate revisions by one user not shown) | |||
Line 113: | Line 113: | ||
cp -r /usr/local/openmoko/source/openmoko-sample2 ~/ | cp -r /usr/local/openmoko/source/openmoko-sample2 ~/ | ||
− | * | + | * Rappelez-vous de positionner les variables d'environnement appropriées (de nouveau avec "sh" ou "bash") pour openmoko : |
. /usr/local/openmoko/arm/setup-env | . /usr/local/openmoko/arm/setup-env | ||
− | * | + | * Vous devez créer une configuration de compilation pour cette application. Cette commande vérifie aussi que les bibliothèques et outils nécessaires sont disponibles sur votre système. Si le script bloque, jetez un coup d'oeil aux notes concernant les paquets nécessaires de la section Prérequis ci-dessus. |
om-conf openmoko-sample2 | om-conf openmoko-sample2 | ||
− | * | + | * Vous pouvez si vous voulez modifier le code source dans le répertoire openmoko-sample2/src. Avant de passer à la suite, placez-vous dans le répertoire exemple. |
cd openmoko-sample2 | cd openmoko-sample2 | ||
− | * | + | * Si vous utilisez une ancienne version de la suite d'outils, il peut être nécessaire de créer le fichier makefile en lançant la commande "./autogen.sh". Dans les autres cas vous pouvez directement compiler l'application à partir du code source en tapant : |
make | make | ||
− | * | + | * S'il y a des erreurs, par exemple "You need to install gnome-common from the GNOME CVS", résolvez-les. Consultez aussi la section "Résolution de problèmes" à la fin de cette page qui aborde les problèmes les plus fréquents. |
− | + | Si vous désirez installer ce projet sur votre ordinateur pour l'intégrer à d'autres (cas d'une librairie partagée par exemple), vous pouvez lancer les commandes suivantes qui effectueront l'installation dans un répertoire précis. | |
om-conf --prefix=/usr/local/openmoko openmoko-sample2 | om-conf --prefix=/usr/local/openmoko openmoko-sample2 | ||
cd openmoko-sample2 | cd openmoko-sample2 | ||
Line 139: | Line 139: | ||
==Comment créer son propre projet à partir du projet exemple== | ==Comment créer son propre projet à partir du projet exemple== | ||
− | + | Vous devez modifier certains éléments pour compiler votre propre projet en partant des fichiers exemples openmoko-sample2 : | |
− | * | + | * dupliquez le code source de l'application exemple que vous venez de télécharger |
cp -r /usr/local/openmoko/source/openmoko-sample2 ~/ | cp -r /usr/local/openmoko/source/openmoko-sample2 ~/ | ||
− | * | + | * renommez le dossier en utilisant le nom de votre projet (dans cet exemple nom-de-mon-projet) et effacez les sources de l'ancien projet |
− | mv openmoko-sample2 | + | mv openmoko-sample2 nom-de-mon-projet |
− | cd | + | cd nom-de-mon-projet |
cd src | cd src | ||
rm *.c | rm *.c | ||
− | * | + | * installez vos codes sources (dans cet exemple mes-sources) dans le répertoire src/ |
− | cp | + | cp mes-sources . |
cd .. | cd .. | ||
− | * | + | * dans le répertoire principal du projet, modifier le fichier autogen.sh en mettant à jour la ligne sur le nom du paquet |
− | PKG_NAME=" | + | PKG_NAME="nom-de-mon-projet" |
− | * | + | * modifier le fichier configure.ac en mettant à jour les lignes suivantes ('main.c' doit correspondre au fichier principal de votre projet) |
− | AC_INIT( | + | AC_INIT(nom-de-mon-projet, 0.0.1, http://www.openmoko.org/) |
AC_CONFIG_SRCDIR(src/main.c) | AC_CONFIG_SRCDIR(src/main.c) | ||
− | * | + | * aller dans le dossier data/ et renommez ces fichiers avec le nom de votre projet |
cd data | cd data | ||
− | mv openmoko-sample.png | + | mv openmoko-sample.png nom-de-mon-projet.png |
− | mv openmoko-sample.desktop | + | mv openmoko-sample.desktop nom-de-mon-projet.desktop |
− | * | + | * modifier le fichier Makefile.am du répertoire data/ en mettant à jour les lignes suivantes |
− | dist_desktop_DATA = | + | dist_desktop_DATA = nom-de-mon-projet.desktop |
− | dist_appicon_DATA = | + | dist_appicon_DATA = nom-de-mon-projet.png |
− | * | + | * modifier Makefile.in dans le répertoire data/ en mettant à jour les lignes suivantes |
− | dist_desktop_DATA = | + | dist_desktop_DATA = nom-de-mon-projet.desktop |
− | dist_appicon_DATA = | + | dist_appicon_DATA = nom-de-mon-projet.png |
− | * | + | * modifier nom-de-mon-projet.desktop en mettant à jour les lignes suivantes |
− | Name= | + | Name=nom-de-mon-projet |
Encoding=UTF-8 | Encoding=UTF-8 | ||
Version=0.0.1 | Version=0.0.1 | ||
Type=Application | Type=Application | ||
− | Exec= | + | Exec=nom-de-mon-projet |
− | * | + | * et rajoutez la ligne suivante dans ce fichier |
− | Icon= | + | Icon=nom-de-mon-projet |
− | * | + | * placez-vous dans le répertoire src/ |
cd .. | cd .. | ||
cd src | cd src | ||
− | * | + | * modifiez Makefile.am en mettant à jour les lignes suivantes |
− | bin_PROGRAMS = | + | bin_PROGRAMS = nom-de-mon-projet |
− | + | nom_de_mon_projet_SOURCES = \ | |
main.c | main.c | ||
− | + | nom_de_mon_projet_LDADD = @DEPENDENCIES_LIBS@ | |
− | * | + | * faites bien attention à remplacer main.c par le nom de tous vos fichiers .c et .h et de remplacer tous les caractères '-' par '_' dans le nom des variables |
==Création du paquet associé à votre application== | ==Création du paquet associé à votre application== | ||
− | + | Nous avons inclus un script qui créée le paquet ipkg à partir de votre application. Ceci n'est pas nécessaire si vous voulez juste tester votre application sur le Neo (un scp du binaire et des données suffit). C'est malgré tout pratique si vous voulez distribuer votre application à d'autres personnes. | |
om-make-ipkg openmoko-sample2 | om-make-ipkg openmoko-sample2 | ||
− | + | Maintenant que vous avez openmoko-sample2_0.1_armv4t.ipk , vous pouvez le `scp' sur votre Neo puis l'installer : | |
− | Neo | + | |
scp openmoko-sample2_0.1_armv4t.ipk root@192.168.0.202: | scp openmoko-sample2_0.1_armv4t.ipk root@192.168.0.202: | ||
ssh root@192.168.0.202 opkg install openmoko-sample2_0.1_armv4t.ipk | ssh root@192.168.0.202 opkg install openmoko-sample2_0.1_armv4t.ipk | ||
− | + | Bien que vous puissiez diffuser le paquet ipkg généré, n'oubliez pas que ce n'est qu'un paquet brut de fonderie qui ne contient pas toutes les informations d'un paquet abouti : il vous manquera la gestion des dépendances. Vous trouverez ci-dessous la méthode pour les rajouter. | |
− | + | Vous pouvez aussi fournir la version, une description et une chaîne d'informations (auteur/contact) via un fichier de contrôle : | |
om-make-ipkg myapp myapp_control | om-make-ipkg myapp myapp_control | ||
− | + | Un exemple type de fichier myapp_control: | |
Package: $appname | Package: $appname | ||
Version: 0.1 | Version: 0.1 | ||
− | Description: | + | Description: paquet construit avec la suite d'outils openmoko |
Section: openmoko/applications | Section: openmoko/applications | ||
Priority: optional | Priority: optional | ||
Line 239: | Line 238: | ||
Source: ${SRC} | Source: ${SRC} | ||
− | == | + | =Utilisation étendue= |
+ | |||
Utiliser la suite d'outils externe est une méthode simple pour compiler des applications à destination de votre Neo. Lorsque vous serez habitué à cette procédure, vous pourrez alors vous intéresser aux articles suivants : | Utiliser la suite d'outils externe est une méthode simple pour compiler des applications à destination de votre Neo. Lorsque vous serez habitué à cette procédure, vous pourrez alors vous intéresser aux articles suivants : | ||
Line 255: | Line 255: | ||
./build | ./build | ||
− | + | Bloquera avec le message d'erreur "arm-angstrom-linux-gnueabi-ld: unrecognized option '-Wl,-rpath-link,/usr/local/openmoko/arm/arm-angstrom-linux-gnueabi/lib'" jusqu'à ce que /usr/local/openmoko/arm/setup-env soit modifié. LDFLAGS doit être changé de : | |
export LDFLAGS="-L${OMTOOL_DIR}/arm/arm-angstrom-linux-gnueabi/lib -Wl,-rpath-link,${OMTOOL_DIR}/arm/arm-angstrom-linux-gnueabi/lib -Wl,-O1" | export LDFLAGS="-L${OMTOOL_DIR}/arm/arm-angstrom-linux-gnueabi/lib -Wl,-rpath-link,${OMTOOL_DIR}/arm/arm-angstrom-linux-gnueabi/lib -Wl,-O1" | ||
− | + | en : | |
export LDFLAGS="-L${OMTOOL_DIR}/arm/arm-angstrom-linux-gnueabi/lib -rpath-link ${OMTOOL_DIR}/arm/arm-angstrom-linux-gnueabi/lib -O1" | export LDFLAGS="-L${OMTOOL_DIR}/arm/arm-angstrom-linux-gnueabi/lib -rpath-link ${OMTOOL_DIR}/arm/arm-angstrom-linux-gnueabi/lib -O1" | ||
− | + | J'ai aussi dû changer le script 'build' pour indiquer en dur le chemin d'accès du compilateur. | |
==Utilisation des bibliothèques fournies par la suite d'outils== | ==Utilisation des bibliothèques fournies par la suite d'outils== | ||
− | + | Rajouter les bibliothèques nécessaires à la variable _LDADD dans src/Makefile.am. Par exemple : | |
openmoko_sample2_LDADD = @DEPENDENCIES_LIBS@ -lmokogsmd2 | openmoko_sample2_LDADD = @DEPENDENCIES_LIBS@ -lmokogsmd2 | ||
− | + | Prenez soin de relancer la commande om-conf après cette modification. | |
==Ajouter des bibliothèques complémentaires à la suite d'outils== | ==Ajouter des bibliothèques complémentaires à la suite d'outils== | ||
− | + | Vous aurez besoin un jour ou l'autre de compiler une application dont les dépendances ne sont pas fournies précompilées par la suite d'outil, comme une bibliothèque rarement utilisée. | |
− | + | Dans ce cas, n'hésitez pas à demander l'inclusion de ces bibliothèques complémentaires à la prochaine version de la suite d'outils Openmoko. D'ici là, vous pouvez étendre la suite d'outils dont vous disposez. Mettons que nous voulons ajouter la bibliothèque appelée liburiparse : | |
cd ~/source | cd ~/source | ||
Line 286: | Line 286: | ||
make install | make install | ||
− | + | C'est tout. | |
==Avoir votre application intégrée à OpenEmbedded== | ==Avoir votre application intégrée à OpenEmbedded== | ||
− | + | Si vous avez écrit une application sympa que vous désirez partager avec d'autres, la meilleure méthode est de | |
− | # | + | # Placer le code source de votre application sur un serveur internet accessible par tous |
− | # | + | # fournir un fichier de description [[BitBake]] à [[OpenEmbedded]], si possible par l'intermédiaire du [http://bugzilla.openembedded.org gestionnaire de bugs OpenEmbedded]. |
− | + | Voir aussi [[Customizing the Openmoko Distribution]]. | |
==Résolution de problèmes== | ==Résolution de problèmes== | ||
− | * | + | * Certaines versions de la suite d'outils ont des fichiers .la corrompus. Si vous compilez une application avec la suite d'outils et que vous obtenez l'erreur '/space/fic/openmoko-daily/neo1973/work/armv4t-angstrom-linux-gnueabi/pango-1.18.3-r0/pango-1.18.3/pango/libpangoft2-1.0.la', vous êtes touché par ce bogue. Pour corriger cela vous devez aller dans le répertoire "/usr/local/openmoko/arm/arm-angstrom-linux-gnueabi/usr/lib", ouvrir les fichiers .la et changer "/space/fic..." en "/usr/local/openmoko/arm/arm-angstrom-linux-gnueabi/usr/lib". Vous devrez corriger plusieurs fichiers .la. Pour l'erreur pango il faut modifier "libpangocairo-1.0.la", mais il y a le problème avec d'autres fichiers .la. |
− | + | Ci-dessous vous trouverez un correctif expérimental au problème .la. Décompactez l'archive .tar.bz2 en tant que super-utilisateur, et exécutez le script bash suivant en tant que super-utilisateur : | |
#!/bin/sh | #!/bin/sh |
Latest revision as of 19:51, 8 October 2008
![]() |
Languages: |
English • العربية • Български • Česky • Dansk • Deutsch • Esperanto • Eesti • Español • فارسی • Suomi • Français • עברית • Magyar • Italiano • 한국어 • Nederlands • Norsk (bokmål) • Polski • Português • Română • Русский • Svenska • Slovenčina • Українська • 中文(中国大陆) • 中文(台灣) • Euskara • Català |
[edit] Introduction
Une suite d'outils de développement est un ensemble de logiciels qui permet de compiler du code. Dans le cadre du projet Openmoko, il faut séparer les différents cas qu'on peut rencontrer :
- (a) Développer une application unique
- Le plus approprié est d'utiliser un environnement de compilation croisée préparé d'avance par le projet Openmoko. Sur cette page vous trouverez une procédure qui décrit pas à pas comment démarrer avec cet environnement, générer un fichier exécutable et le déclencher sur la plateforme choisie. Il se peut que vous ayez entendu parler d' OpenEmbedded mais en tant que développeur d'applications vous ne devriez pas l'utiliser.
- (b) Intégration de composants système ou personnalisation d'une distribution logicielle
- Pour cela vous devriez utiliser OpenEmbedded qui construit son propre environnement de compilation croisée lors de la phase de construction. L'intégration de composants système et la personnalisation d'une distribution ne sont pas abordés dans cette page.
[edit] Utilisation élémentaire de l'environnement de compilation croisée
[edit] Prérequis
Pour mettre en place cet environnement, vous devez être à l'aise avec Linux et les outils en ligne de commande ainsi que disposer d'un ordinateur compatible x86 avec au moins 1Go de place libre sur le disque dur. Vous devez avoir l'habitude de compiler des programmes à partir du code source en utilisant le compilateur de votre distribution. La suite de ce document adopte comme hypothèse que vous avez accès en écriture à votre répertoire racine (~) ainsi qu'au répertoire /usr/local (en tant que superutilisateur si besoin). Si ce n'est pas le cas, veuillez contacter l'administrateur système pour assistance.
Dernier point important : vous devez disposer d'un environnement fonctionnel qui permette de compiler des logiciels (en mode natif) par l'intermédiaire des outils de la suite logicielle autotools (le triplet ./configure, make, make install).
Une liste (incomplète?) des logiciels nécessaires -- merci de compléter cette liste au besoin :
- For most Linux version you might only need to install the packages
- autoconf, automake
- binutils, gcc, gcc-c++
- libtool
- ccache
- intltool
- Pour la distribution Ubuntu 8.04 ( le versions antérieure n'intègrent pas libmokoui2 ) la commande suivante installe les éléments nécessaires :
sudo apt-get install gcc g++ autoconf automake binutils libtool libglib2.0-dev \ ccache libxrender-dev intltool libmokoui2-dev libgconf2-dev mtools fakeroot alien check
- Pour la distribution Ubuntu 8.10 la commande additionnelle est requise :
sudo apt-get install uboot-mkimage
- Pour la distribution Fedora-Core la commande suivante déclenchée en tant que super-utilisateur est nécessaire :
yum install gcc gcc-c++ autoconf automake binutils libtool glib2-devel \ ccache libXrender-devel intltool GConf2-devel mtools gettext-devel
Fedora-Core ne semble pas contenir la bibliothèque libmokoui2.
[edit] Téléchargement et installation
NOTE: Si vous désirez améliorer une application existante et que vous avez une distribution Debian ou Ubuntu i386 (i.e. avec des paquets .deb), vous préférerez peut-être éviter la phase suivante et plutôt utiliser la méthode décrite à
Développement d'applications Openmoko en 5 minutes par Andreas Dalsgaard. (procédure basée sur la distribution 2007.2) |
La suite d'outils de développement précompilée peut être téléchargée à downloads.openmoko.org:
- Créez un répertoire de destination pour les logiciels, par exemple :
mkdir ~/sources cd ~/sources
- Téléchargez le paquet adapté à votre architecture de processeur (x86_64 or i686) :
wget http://downloads.openmoko.org/toolchains/openmoko-x86_64-arm-linux-gnueabi-toolchain.tar.bz2 ou wget http://downloads.openmoko.org/toolchains/openmoko-i686-arm-linux-gnueabi-toolchain.tar.bz2
NOTE: Certaines personnes ont des problèmes avec la version 20080521 des outils. Si vous observez des erreurs, essayez une version différente. (information valide en date du 23 juillet 2008) |
Ensuite vous aurez à décompresser ce paquet dans votre système. Cet environnement doit obligatoirement être installé dans le répertoire /usr/local/openmoko/. Vous avez les possibilités suivantes :
- La décompresser directement en tant que super-utilisateur en utilisant la commande su (ou en préfixant votre commande avec "sudo" si vous utilisez Debian/Ubuntu) :
cd / tar -xjvf ~/sources/openmoko-XYZ-arm-linux-gnueabi-toolchain.tar.bz2
- Sur les variantes de Debian (par exemple Ubuntu), vous pouvez utiliser alien(+fakeroot) pour créer un paquet facile à installer à partir du fichier .tar.bz2 :
bunzip2 openmoko-*-arm-linux-gnueabi-toolchain.tar.bz2 gzip openmoko-*-arm-linux-gnueabi-toolchain.tar fakeroot alien -d openmoko-*-arm-linux-gnueabi-toolchain.tar.gz sudo dpkg -i openmoko_*-arm-linux-gnueabi-toolchain*.deb
- La suite de développement précompilée n'est disponible que pour architectures x86_64 ou i686. Si vous le désirez vous pouvez la recréer sous OpenEmbedded avec la commande :
bitbake meta-toolchain-openmoko
Pour finir, vous devez modifier certaines variables d'environnement pour que les outils utilisés par la suite de développement soient trouvés. La suite de développement intègre un script qui effectue cela, il suffit de l'exécuter via la commande source de votre interpréteur de commande. Si vous n'utilisez pas l'un des interpréteurs "sh" ou "bash" (vous pouvez vérifier avec la commande "echo $SHELL"), vous devez démarrer "sh" ou "bash" d'abord.
. /usr/local/openmoko/arm/setup-env
- Vous devez au moins ajouter le répertoire /usr/local/openmoko/arm/bin à votre variable d'environnement $PATH, sinon les étapes suivantes (om-conf et make) ne fonctionneront pas.
export PATH=$PATH:/usr/local/openmoko/arm/bin
Note: Cela ne fonctionnera que pour votre session en cours. Rajoutez cette commande à votre script de démarrage (~/.bashrc par exemple) pour rendre cette modification permanente.
[edit] Installation de nouvelles bibliothèques
La suite d'outils Openmoko ne contient pas beaucoup de bibliothèques par défaut. Ceci dit on peut télécharger et installer des bibliothèques complémentaires. Par défaut on utilise le répertoire de paquets Testing pour ces bibliothèques complémentaires.
- Vous devez modifier certaines variables d'environnement avant de télécharger des bibliothèques complémentaires :
. /usr/local/openmoko/arm/environment-setup
- Etape 1 : mise à jour la base de données opkg (Remarque : utilisez l'alias opkg-target et non opkg)
opkg-target update
- Etape 2 : choisissez un paquet que vous voulez rajouter. Le paquet edje par exemple. Si vous voulez développer un projet qui utilise le composant edje de Enlightenment, vous pouvez utiliser opkg-target list pour afficher les nombreux paquets installables. La commande grep vous sera d'une grande aide.(Rappelez-vous, vous devez installer le paquet -dev package et pas seulement libedje.)
opkg-target list |grep edje-dev
- Etape 3 : installation
opkg-target install libedje-dev
- Etape 4 : préparez-vous une tasse de thé et attendez.
[edit] Création d'un projet exemple
Choisissez un répertoire de destination (dans cet exemple ~/) puis :
- copiez le source code téléchargé de l'application exemple :
cp -r /usr/local/openmoko/source/openmoko-sample2 ~/
- Rappelez-vous de positionner les variables d'environnement appropriées (de nouveau avec "sh" ou "bash") pour openmoko :
. /usr/local/openmoko/arm/setup-env
- Vous devez créer une configuration de compilation pour cette application. Cette commande vérifie aussi que les bibliothèques et outils nécessaires sont disponibles sur votre système. Si le script bloque, jetez un coup d'oeil aux notes concernant les paquets nécessaires de la section Prérequis ci-dessus.
om-conf openmoko-sample2
- Vous pouvez si vous voulez modifier le code source dans le répertoire openmoko-sample2/src. Avant de passer à la suite, placez-vous dans le répertoire exemple.
cd openmoko-sample2
- Si vous utilisez une ancienne version de la suite d'outils, il peut être nécessaire de créer le fichier makefile en lançant la commande "./autogen.sh". Dans les autres cas vous pouvez directement compiler l'application à partir du code source en tapant :
make
- S'il y a des erreurs, par exemple "You need to install gnome-common from the GNOME CVS", résolvez-les. Consultez aussi la section "Résolution de problèmes" à la fin de cette page qui aborde les problèmes les plus fréquents.
Si vous désirez installer ce projet sur votre ordinateur pour l'intégrer à d'autres (cas d'une librairie partagée par exemple), vous pouvez lancer les commandes suivantes qui effectueront l'installation dans un répertoire précis.
om-conf --prefix=/usr/local/openmoko openmoko-sample2 cd openmoko-sample2 make install
[edit] Comment créer son propre projet à partir du projet exemple
Vous devez modifier certains éléments pour compiler votre propre projet en partant des fichiers exemples openmoko-sample2 :
- dupliquez le code source de l'application exemple que vous venez de télécharger
cp -r /usr/local/openmoko/source/openmoko-sample2 ~/
- renommez le dossier en utilisant le nom de votre projet (dans cet exemple nom-de-mon-projet) et effacez les sources de l'ancien projet
mv openmoko-sample2 nom-de-mon-projet cd nom-de-mon-projet cd src rm *.c
- installez vos codes sources (dans cet exemple mes-sources) dans le répertoire src/
cp mes-sources . cd ..
- dans le répertoire principal du projet, modifier le fichier autogen.sh en mettant à jour la ligne sur le nom du paquet
PKG_NAME="nom-de-mon-projet"
- modifier le fichier configure.ac en mettant à jour les lignes suivantes ('main.c' doit correspondre au fichier principal de votre projet)
AC_INIT(nom-de-mon-projet, 0.0.1, http://www.openmoko.org/) AC_CONFIG_SRCDIR(src/main.c)
- aller dans le dossier data/ et renommez ces fichiers avec le nom de votre projet
cd data mv openmoko-sample.png nom-de-mon-projet.png mv openmoko-sample.desktop nom-de-mon-projet.desktop
- modifier le fichier Makefile.am du répertoire data/ en mettant à jour les lignes suivantes
dist_desktop_DATA = nom-de-mon-projet.desktop dist_appicon_DATA = nom-de-mon-projet.png
- modifier Makefile.in dans le répertoire data/ en mettant à jour les lignes suivantes
dist_desktop_DATA = nom-de-mon-projet.desktop dist_appicon_DATA = nom-de-mon-projet.png
- modifier nom-de-mon-projet.desktop en mettant à jour les lignes suivantes
Name=nom-de-mon-projet Encoding=UTF-8 Version=0.0.1 Type=Application Exec=nom-de-mon-projet
- et rajoutez la ligne suivante dans ce fichier
Icon=nom-de-mon-projet
- placez-vous dans le répertoire src/
cd .. cd src
- modifiez Makefile.am en mettant à jour les lignes suivantes
bin_PROGRAMS = nom-de-mon-projet nom_de_mon_projet_SOURCES = \ main.c nom_de_mon_projet_LDADD = @DEPENDENCIES_LIBS@
- faites bien attention à remplacer main.c par le nom de tous vos fichiers .c et .h et de remplacer tous les caractères '-' par '_' dans le nom des variables
[edit] Création du paquet associé à votre application
Nous avons inclus un script qui créée le paquet ipkg à partir de votre application. Ceci n'est pas nécessaire si vous voulez juste tester votre application sur le Neo (un scp du binaire et des données suffit). C'est malgré tout pratique si vous voulez distribuer votre application à d'autres personnes.
om-make-ipkg openmoko-sample2
Maintenant que vous avez openmoko-sample2_0.1_armv4t.ipk , vous pouvez le `scp' sur votre Neo puis l'installer :
scp openmoko-sample2_0.1_armv4t.ipk root@192.168.0.202: ssh root@192.168.0.202 opkg install openmoko-sample2_0.1_armv4t.ipk
Bien que vous puissiez diffuser le paquet ipkg généré, n'oubliez pas que ce n'est qu'un paquet brut de fonderie qui ne contient pas toutes les informations d'un paquet abouti : il vous manquera la gestion des dépendances. Vous trouverez ci-dessous la méthode pour les rajouter.
Vous pouvez aussi fournir la version, une description et une chaîne d'informations (auteur/contact) via un fichier de contrôle :
om-make-ipkg myapp myapp_control
Un exemple type de fichier myapp_control:
Package: $appname Version: 0.1 Description: paquet construit avec la suite d'outils openmoko Section: openmoko/applications Priority: optional Maintainer: $USER Architecture: armv4t Homepage: http://www.openmoko.org/ Depends: Source: ${SRC}
[edit] Utilisation étendue
Utiliser la suite d'outils externe est une méthode simple pour compiler des applications à destination de votre Neo. Lorsque vous serez habitué à cette procédure, vous pourrez alors vous intéresser aux articles suivants :
- Utiliser Qemu pour tester vos applications dans un environnement émulé
- Les utilisateurs Ubuntu pourraient préférer l'article Automatic_emulation_in_Ubuntu
- Utiliser développement sur un hôte pour améliorer votre efficacité
- Utiliser OpenEmbedded pour personnaliser votre image de la distribution Openmoko
[edit] Compilation du noyau Openmoko à partir de l'entrepôt git en utilisant la suite d'outils
git clone git://git.openmoko.org/git/kernel.git linux-2.6 cd linux-2.6 git checkout -b mystable origin/stable cp defconfig-gta02 .config ./build
Bloquera avec le message d'erreur "arm-angstrom-linux-gnueabi-ld: unrecognized option '-Wl,-rpath-link,/usr/local/openmoko/arm/arm-angstrom-linux-gnueabi/lib'" jusqu'à ce que /usr/local/openmoko/arm/setup-env soit modifié. LDFLAGS doit être changé de :
export LDFLAGS="-L${OMTOOL_DIR}/arm/arm-angstrom-linux-gnueabi/lib -Wl,-rpath-link,${OMTOOL_DIR}/arm/arm-angstrom-linux-gnueabi/lib -Wl,-O1"
en :
export LDFLAGS="-L${OMTOOL_DIR}/arm/arm-angstrom-linux-gnueabi/lib -rpath-link ${OMTOOL_DIR}/arm/arm-angstrom-linux-gnueabi/lib -O1"
J'ai aussi dû changer le script 'build' pour indiquer en dur le chemin d'accès du compilateur.
[edit] Utilisation des bibliothèques fournies par la suite d'outils
Rajouter les bibliothèques nécessaires à la variable _LDADD dans src/Makefile.am. Par exemple :
openmoko_sample2_LDADD = @DEPENDENCIES_LIBS@ -lmokogsmd2
Prenez soin de relancer la commande om-conf après cette modification.
[edit] Ajouter des bibliothèques complémentaires à la suite d'outils
Vous aurez besoin un jour ou l'autre de compiler une application dont les dépendances ne sont pas fournies précompilées par la suite d'outil, comme une bibliothèque rarement utilisée.
Dans ce cas, n'hésitez pas à demander l'inclusion de ces bibliothèques complémentaires à la prochaine version de la suite d'outils Openmoko. D'ici là, vous pouvez étendre la suite d'outils dont vous disposez. Mettons que nous voulons ajouter la bibliothèque appelée liburiparse :
cd ~/source wget http://downloads.sourceforge.net/uriparser/uriparser-0.6.0.tar.bz2 tar xjf uriparser-0.6.0.tar.bz2 cd uriparser-0.6.0 ./configure --host=arm-angstrom-linux-gnueabi \ --prefix=/usr/local/openmoko/arm/arm-angstrom-linux-gnueabi/usr make make install
C'est tout.
[edit] Avoir votre application intégrée à OpenEmbedded
Si vous avez écrit une application sympa que vous désirez partager avec d'autres, la meilleure méthode est de
- Placer le code source de votre application sur un serveur internet accessible par tous
- fournir un fichier de description BitBake à OpenEmbedded, si possible par l'intermédiaire du gestionnaire de bugs OpenEmbedded.
Voir aussi Customizing the Openmoko Distribution.
[edit] Résolution de problèmes
- Certaines versions de la suite d'outils ont des fichiers .la corrompus. Si vous compilez une application avec la suite d'outils et que vous obtenez l'erreur '/space/fic/openmoko-daily/neo1973/work/armv4t-angstrom-linux-gnueabi/pango-1.18.3-r0/pango-1.18.3/pango/libpangoft2-1.0.la', vous êtes touché par ce bogue. Pour corriger cela vous devez aller dans le répertoire "/usr/local/openmoko/arm/arm-angstrom-linux-gnueabi/usr/lib", ouvrir les fichiers .la et changer "/space/fic..." en "/usr/local/openmoko/arm/arm-angstrom-linux-gnueabi/usr/lib". Vous devrez corriger plusieurs fichiers .la. Pour l'erreur pango il faut modifier "libpangocairo-1.0.la", mais il y a le problème avec d'autres fichiers .la.
Ci-dessous vous trouverez un correctif expérimental au problème .la. Décompactez l'archive .tar.bz2 en tant que super-utilisateur, et exécutez le script bash suivant en tant que super-utilisateur :
#!/bin/sh DIR=/usr/local/openmoko/arm for la in `find $DIR -iname \*.la`; do dependency_libs= . $la for lib in $dependency_libs ; do delib=`echo $lib | grep -E .la$` if [ -z $delib ] ; then echo -n elif [ -f $delib ]; then echo -n else basedelib=`basename $delib` replacedelibs=`find $DIR -iname $basedelib` found=0 for replacedelib in $replacedelibs ; do if [ $replacedelib == $delib ]; then found=1 fi done if [ $found -gt 0 ] ; then echo -n else sed_delib=`echo $delib | sed 's/\//\\\\\//g'` sed_replacedelib=`echo $replacedelib | sed 's/\//\\\\\//g'` # A bit slow, we could chain expressions for speed. :) cp $la $la.old cat $la | sed "s/$sed_delib/$sed_replacedelib/g" > $la.new mv $la.new $la rm $la.old fi fi done done
- Merci d'utiliser la liste de diffusion associée au développement Openmoko-Devel.