Toolchain/fr

From Openmoko

(Difference between revisions)
Jump to: navigation, search
m (Introduction)
(Autres articles sur des sujets connexes qui pourront vous intéresser)
 
(18 intermediate revisions by one user not shown)
Line 1: Line 1:
===Cette page est en cours de traduction===
+
{{Languages|Toolchain}}
 
+
{{Languages|Suite d'outils de développement}}
+
 
+
  
 
= Introduction =
 
= Introduction =
Line 92: Line 89:
 
==Installation de nouvelles bibliothèques==
 
==Installation de nouvelles bibliothèques==
  
Openmoko toolchain didn't include many libraries in default. However, it can download and install library what has already existed in Openmoko repository. (It refer to [http://downloads.openmoko.org/repository/testing/ Testing Repository] by default.)
+
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 [http://downloads.openmoko.org/repository/testing/ répertoire de paquets Testing] pour ces bibliothèques complémentaires.
  
*You need to alter some environment variables before you download libraries.
+
*Vous devez modifier certaines variables d'environnement avant de télécharger des bibliothèques complémentaires :
 
   . /usr/local/openmoko/arm/environment-setup
 
   . /usr/local/openmoko/arm/environment-setup
  
*First, update the opkg database (Notice, you should use alias '''opkg-target''' but not '''opkg''')
+
*Etape 1 : mise à jour la base de données opkg (Remarque : utilisez l'alias '''opkg-target''' et non '''opkg''')
 
  opkg-target update
 
  opkg-target update
  
*Second, select a package what you want. Let's use edje as an example. If you want develop an project which use edje of Enlightenment, you can use '''opkg-target list''' to print out how many packages you can have. Of course, command '''grep''' will help you a lot.(Remember, you should install -dev package but not only libedje.)
+
*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
 
  opkg-target list |grep edje-dev
  
*Third, install it
+
*Etape 3 : installation
 
  opkg-target install libedje-dev
 
  opkg-target install libedje-dev
*Fourth, have a cup of coffee and wait.
+
 
 +
*Etape 4 : préparez-vous une tasse de thé et attendez.
  
 
==Création d'un projet exemple==
 
==Création d'un projet exemple==
  
In a chosen destination directory (in this example ~/):
+
Choisissez un répertoire de destination (dans cet exemple ~/) puis :
  
* copy the downloaded sample application source:
+
* copiez le source code téléchargé de l'application exemple :
  
 
  cp -r /usr/local/openmoko/source/openmoko-sample2 ~/
 
  cp -r /usr/local/openmoko/source/openmoko-sample2 ~/
  
* Remember to set the proper environment variables (again with "sh" or "bash") for openmoko:
+
* 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
  
* You need to create a build configuration for this application. This also checks if all needed libraries, tools, etc.. is available on your system. If this fails see the notes about the needed packages in the section "Prerequisites" mentioned earlier.
+
* 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
  
* Optionally now you can modify the source code in openmoko-sample2/src. Before the next step, go into the sample directory.
+
* 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
  
* If you are using an older version of the toolchain, you may have to create the makefile by running "./autogen.sh". Otherwise, to build the application from the source code just type:
+
* 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
  
* If there are errors (i.e. "You need to install gnome-common from the GNOME CVS") deal with them. Also see "Troubleshooting" section at the end of this page for known issues.
+
* 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.
  
  
If you want to install this project on host for staging usage later, a shared library, for example, you can do the following to install it into a given configured prefix.
+
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 141: Line 139:
 
==Comment créer son propre projet à partir du projet exemple==
 
==Comment créer son propre projet à partir du projet exemple==
  
In order to build your own project by using openmoko-sample2 files, some changes are needed:
+
Vous devez modifier certains éléments pour compiler votre propre projet en partant des fichiers exemples openmoko-sample2 :
  
* copy the downloaded sample application source
+
* 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 ~/
 
   
 
   
* rename the folder with the name of your project (in this example your-project-name) and delete old sample files
+
* 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 your-project-name
+
  mv openmoko-sample2 nom-de-mon-projet
  cd your-project-name
+
  cd nom-de-mon-projet
 
  cd src
 
  cd src
 
  rm *.c
 
  rm *.c
  
* copy your sources (in this example your-sources) into src/
+
* installez vos codes sources (dans cet exemple mes-sources) dans le répertoire src/
  
  cp your-sources .
+
  cp mes-sources .
 
  cd ..
 
  cd ..
  
* now in the main folder modify autogen.sh by updating the following lines
+
* dans le répertoire principal du projet, modifier le fichier autogen.sh en mettant à jour la ligne sur le nom du paquet
  
  PKG_NAME="your-project-name"
+
  PKG_NAME="nom-de-mon-projet"
  
* modify configure.ac by updating the following lines ('main.c' should be the main file in your project)
+
* modifier le fichier configure.ac en mettant à jour les lignes suivantes ('main.c' doit correspondre au fichier principal de votre projet)
  
  AC_INIT(your-project-name, 0.0.1, http://www.openmoko.org/)     
+
  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)
  
* go into data/ folder and rename these files with the name of your project
+
* aller dans le dossier data/ et renommez ces fichiers avec le nom de votre projet
  
 
  cd data
 
  cd data
  mv openmoko-sample.png your-project-name.png
+
  mv openmoko-sample.png nom-de-mon-projet.png
  mv openmoko-sample.desktop your-project-name.desktop
+
  mv openmoko-sample.desktop nom-de-mon-projet.desktop
  
* modify Makefile.am inside data/ by updating the following lines
+
* modifier le fichier Makefile.am du répertoire data/ en mettant à jour les lignes suivantes
  
  dist_desktop_DATA = your-project-name.desktop
+
  dist_desktop_DATA = nom-de-mon-projet.desktop
  dist_appicon_DATA = your-project-name.png
+
  dist_appicon_DATA = nom-de-mon-projet.png
  
* modify Makefile.in inside data/ by updating the following lines
+
* modifier Makefile.in dans le répertoire data/ en mettant à jour les lignes suivantes
 
   
 
   
  dist_desktop_DATA = your-project-name.desktop
+
  dist_desktop_DATA = nom-de-mon-projet.desktop
  dist_appicon_DATA = your-project-name.png
+
  dist_appicon_DATA = nom-de-mon-projet.png
  
* modify your-project-name.desktop by updating the following lines
+
* modifier nom-de-mon-projet.desktop en mettant à jour les lignes suivantes
  
  Name=your-project-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=your-project-name
+
  Exec=nom-de-mon-projet
  
* and by adding the following line
+
* et rajoutez la ligne suivante dans ce fichier
  
  Icon=your-project-name
+
  Icon=nom-de-mon-projet
  
* move into src/ folder
+
* placez-vous dans le répertoire src/
  
 
  cd ..
 
  cd ..
 
  cd src
 
  cd src
  
* modify Makefile.am by updating the following lines
+
* modifiez Makefile.am en mettant à jour les lignes suivantes
  
  bin_PROGRAMS = your-project-name
+
  bin_PROGRAMS = nom-de-mon-projet
  your_project_name_SOURCES = \
+
  nom_de_mon_projet_SOURCES = \
 
   main.c  
 
   main.c  
  your_project_name_LDADD = @DEPENDENCIES_LIBS@
+
  nom_de_mon_projet_LDADD = @DEPENDENCIES_LIBS@
  
* be sure to put instead of main.c all your .c and .h files and modify all the '-' characters with '_' in the variable names
+
* 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==
  
We have included a script to make an ipkg out of your application. Note that this is not needed to test your application on the Neo (for that you can just scp the resulting binary and data over), however it's very handy if you want to distribute your application to others.
+
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
  
Now you got openmoko-sample2_0.1_armv4t.ipk , you can `scp' it to your
+
Maintenant que vous avez openmoko-sample2_0.1_armv4t.ipk , vous pouvez le `scp' sur votre Neo puis l'installer :
Neo and install it:
+
  
 
  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
  
Note that while you can redistribute the generated ipkg, be aware that this is a bare-bones ipk that contains no further information, i.e. you will lack library dependencies. See below how to fix this.
+
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.
  
You can also supply the version number, a description, and an author / contacts string in a control file:
+
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
  
A template of myapp_control:
+
Un exemple type de fichier myapp_control:
  
 
  Package: $appname
 
  Package: $appname
 
  Version: 0.1
 
  Version: 0.1
  Description: package built by openmoko toolchain
+
  Description: paquet construit avec la suite d'outils openmoko
 
  Section: openmoko/applications
 
  Section: openmoko/applications
 
  Priority: optional
 
  Priority: optional
Line 241: Line 238:
 
  Source: ${SRC}
 
  Source: ${SRC}
  
==Autres articles sur des sujets connexes qui pourront vous intéresser==
+
=Utilisation étendue=
 +
 
  
Using the external toolchain is an easy way to build applications for your Neo. If you are familiar with this procedure, you might also want to look into
+
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 :
* Using [[Qemu]] to test your applications in an emulated environment
+
* Utiliser [[Qemu/fr|Qemu]] pour tester vos applications dans un environnement émulé
** Ubuntu users might prefer to look at [[Automatic_emulation_in_Ubuntu]]
+
** Les utilisateurs Ubuntu pourraient préférer l'article [[Automatic_emulation_in_Ubuntu]]
* Using [[Host-based_development_with_Xoo_and_Xephyr|host-based development]] to improve your efficiency
+
* Utiliser [[Host-based_development_with_Xoo_and_Xephyr|développement sur un hôte]] pour améliorer votre efficacité
* Using [[OpenEmbedded]] to customize your Openmoko distribution image
+
* Utiliser [[OpenEmbedded/fr|OpenEmbedded]] pour personnaliser votre image de la distribution Openmoko
  
==
 
 
==Compilation du noyau Openmoko à partir de l'entrepôt git en utilisant la suite d'outils==
 
==Compilation du noyau Openmoko à partir de l'entrepôt git en utilisant la suite d'outils==
  
Line 258: Line 255:
 
  ./build
 
  ./build
  
Will fail with error message "arm-angstrom-linux-gnueabi-ld: unrecognized option '-Wl,-rpath-link,/usr/local/openmoko/arm/arm-angstrom-linux-gnueabi/lib'" until /usr/local/openmoko/arm/setup-env is modified. LDFLAGS should be changed from:
+
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"
  
to:
+
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"
  
I also had to change the 'build' script to hardcode the path to the compiler.
+
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==
Add the necessary libraries to the _LDADD field in src/Makefile.am, for example:
+
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
  
make sure to run om-conf again after this.
+
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==
  
Sooner or later you will want to compile an application that has dependencies which can't be fulfilled by the precompiled toolchain, e.g. some obscure libraries.
+
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.
  
In that case, feel free to request the inclusion of additional libraries into the next release of the Openmoko toolchain. Until then, here is how you enhance your already installed toolchain. Say, we want to add the library called liburiparse:
+
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 289: Line 286:
 
  make install
 
  make install
  
That's it.
+
C'est tout.
  
 
==Avoir votre application intégrée à OpenEmbedded==
 
==Avoir votre application intégrée à OpenEmbedded==
  
If you have written a cool application which you want to share with others, the best way to do that is to
+
Si vous avez écrit une application sympa que vous désirez partager avec d'autres, la meilleure méthode est de
  
# upload your application source code to a public location
+
# Placer le code source de votre application sur un serveur internet accessible par tous
# submit a [[BitBake]] recipe to [[OpenEmbedded]], preferably via the [http://bugzilla.openembedded.org OpenEmbedded bugtracker].
+
# fournir un fichier de description [[BitBake]] à [[OpenEmbedded]], si possible par l'intermédiaire du [http://bugzilla.openembedded.org gestionnaire de bugs OpenEmbedded].
  
See also [[Customizing the Openmoko Distribution]].
+
Voir aussi [[Customizing the Openmoko Distribution]].
  
 
==Résolution de problèmes==
 
==Résolution de problèmes==
  
* Some Versions of the Toolchain have corrupt .la files. If you compile an application using the Toolchain and you receive a '/space/fic/openmoko-daily/neo1973/work/armv4t-angstrom-linux-gnueabi/pango-1.18.3-r0/pango-1.18.3/pango/libpangoft2-1.0.la' error, you are affected. To fix that you should go to your "/usr/local/openmoko/arm/arm-angstrom-linux-gnueabi/usr/lib" directory and open the affected .la files and change "/space/fic..." to "/usr/local/openmoko/arm/arm-angstrom-linux-gnueabi/usr/lib". You have to fix more than one .la file. For the pango error you have to change "libpangocairo-1.0.la", but there are more corrupt .la files.
+
* 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.
  
Attached is a beta fix for the .la problem. Untar the .tar.bz2 as root, and execute the following bash script as root:
+
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 18:51, 8 October 2008


Contents

[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 :

[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

  1. Placer le code source de votre application sur un serveur internet accessible par tous
  2. 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.
Personal tools

Cette page est en cours de traduction


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.

Utilisation élémentaire de l'environnement de compilation croisée

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.

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.

Installation de nouvelles bibliothèques

Openmoko toolchain didn't include many libraries in default. However, it can download and install library what has already existed in Openmoko repository. (It refer to Testing Repository by default.)

  • You need to alter some environment variables before you download libraries.
 . /usr/local/openmoko/arm/environment-setup
  • First, update the opkg database (Notice, you should use alias opkg-target but not opkg)
opkg-target update
  • Second, select a package what you want. Let's use edje as an example. If you want develop an project which use edje of Enlightenment, you can use opkg-target list to print out how many packages you can have. Of course, command grep will help you a lot.(Remember, you should install -dev package but not only libedje.)
opkg-target list |grep edje-dev
  • Third, install it
opkg-target install libedje-dev
  • Fourth, have a cup of coffee and wait.

Création d'un projet exemple

In a chosen destination directory (in this example ~/):

  • copy the downloaded sample application source:
cp -r /usr/local/openmoko/source/openmoko-sample2 ~/
  • Remember to set the proper environment variables (again with "sh" or "bash") for openmoko:
. /usr/local/openmoko/arm/setup-env
  • You need to create a build configuration for this application. This also checks if all needed libraries, tools, etc.. is available on your system. If this fails see the notes about the needed packages in the section "Prerequisites" mentioned earlier.
om-conf openmoko-sample2
  • Optionally now you can modify the source code in openmoko-sample2/src. Before the next step, go into the sample directory.
cd openmoko-sample2
  • If you are using an older version of the toolchain, you may have to create the makefile by running "./autogen.sh". Otherwise, to build the application from the source code just type:
make
  • If there are errors (i.e. "You need to install gnome-common from the GNOME CVS") deal with them. Also see "Troubleshooting" section at the end of this page for known issues.


If you want to install this project on host for staging usage later, a shared library, for example, you can do the following to install it into a given configured prefix.

om-conf --prefix=/usr/local/openmoko openmoko-sample2
cd openmoko-sample2
make install

Comment créer son propre projet à partir du projet exemple

In order to build your own project by using openmoko-sample2 files, some changes are needed:

  • copy the downloaded sample application source
cp -r /usr/local/openmoko/source/openmoko-sample2 ~/

  • rename the folder with the name of your project (in this example your-project-name) and delete old sample files
mv openmoko-sample2 your-project-name
cd your-project-name
cd src
rm *.c
  • copy your sources (in this example your-sources) into src/
cp your-sources .
cd ..
  • now in the main folder modify autogen.sh by updating the following lines
PKG_NAME="your-project-name"
  • modify configure.ac by updating the following lines ('main.c' should be the main file in your project)
AC_INIT(your-project-name, 0.0.1, http://www.openmoko.org/)    
AC_CONFIG_SRCDIR(src/main.c)
  • go into data/ folder and rename these files with the name of your project
cd data
mv openmoko-sample.png your-project-name.png
mv openmoko-sample.desktop your-project-name.desktop
  • modify Makefile.am inside data/ by updating the following lines
dist_desktop_DATA = your-project-name.desktop
dist_appicon_DATA = your-project-name.png
  • modify Makefile.in inside data/ by updating the following lines
dist_desktop_DATA = your-project-name.desktop
dist_appicon_DATA = your-project-name.png
  • modify your-project-name.desktop by updating the following lines
Name=your-project-name
Encoding=UTF-8
Version=0.0.1
Type=Application
Exec=your-project-name
  • and by adding the following line
Icon=your-project-name
  • move into src/ folder
cd ..
cd src
  • modify Makefile.am by updating the following lines
bin_PROGRAMS = your-project-name	
your_project_name_SOURCES = \				
 		main.c 
your_project_name_LDADD  = @DEPENDENCIES_LIBS@
  • be sure to put instead of main.c all your .c and .h files and modify all the '-' characters with '_' in the variable names

Création du paquet associé à votre application

We have included a script to make an ipkg out of your application. Note that this is not needed to test your application on the Neo (for that you can just scp the resulting binary and data over), however it's very handy if you want to distribute your application to others.

om-make-ipkg openmoko-sample2

Now you got openmoko-sample2_0.1_armv4t.ipk , you can `scp' it to your Neo and install it:

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

Note that while you can redistribute the generated ipkg, be aware that this is a bare-bones ipk that contains no further information, i.e. you will lack library dependencies. See below how to fix this.

You can also supply the version number, a description, and an author / contacts string in a control file:

om-make-ipkg myapp myapp_control

A template of myapp_control:

Package: $appname
Version: 0.1
Description: package built by openmoko toolchain
Section: openmoko/applications
Priority: optional
Maintainer: $USER
Architecture: armv4t
Homepage: http://www.openmoko.org/
Depends: 
Source: ${SRC}

Autres articles sur des sujets connexes qui pourront vous intéresser

Using the external toolchain is an easy way to build applications for your Neo. If you are familiar with this procedure, you might also want to look into

==

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

Will fail with error message "arm-angstrom-linux-gnueabi-ld: unrecognized option '-Wl,-rpath-link,/usr/local/openmoko/arm/arm-angstrom-linux-gnueabi/lib'" until /usr/local/openmoko/arm/setup-env is modified. LDFLAGS should be changed from:

export LDFLAGS="-L${OMTOOL_DIR}/arm/arm-angstrom-linux-gnueabi/lib -Wl,-rpath-link,${OMTOOL_DIR}/arm/arm-angstrom-linux-gnueabi/lib -Wl,-O1"

to:

export LDFLAGS="-L${OMTOOL_DIR}/arm/arm-angstrom-linux-gnueabi/lib -rpath-link ${OMTOOL_DIR}/arm/arm-angstrom-linux-gnueabi/lib -O1"

I also had to change the 'build' script to hardcode the path to the compiler.

Utilisation des bibliothèques fournies par la suite d'outils

Add the necessary libraries to the _LDADD field in src/Makefile.am, for example:

openmoko_sample2_LDADD  = @DEPENDENCIES_LIBS@ -lmokogsmd2

make sure to run om-conf again after this.

Ajouter des bibliothèques complémentaires à la suite d'outils

Sooner or later you will want to compile an application that has dependencies which can't be fulfilled by the precompiled toolchain, e.g. some obscure libraries.

In that case, feel free to request the inclusion of additional libraries into the next release of the Openmoko toolchain. Until then, here is how you enhance your already installed toolchain. Say, we want to add the library called 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

That's it.

Avoir votre application intégrée à OpenEmbedded

If you have written a cool application which you want to share with others, the best way to do that is to

  1. upload your application source code to a public location
  2. submit a BitBake recipe to OpenEmbedded, preferably via the OpenEmbedded bugtracker.

See also Customizing the Openmoko Distribution.

Résolution de problèmes

  • Some Versions of the Toolchain have corrupt .la files. If you compile an application using the Toolchain and you receive a '/space/fic/openmoko-daily/neo1973/work/armv4t-angstrom-linux-gnueabi/pango-1.18.3-r0/pango-1.18.3/pango/libpangoft2-1.0.la' error, you are affected. To fix that you should go to your "/usr/local/openmoko/arm/arm-angstrom-linux-gnueabi/usr/lib" directory and open the affected .la files and change "/space/fic..." to "/usr/local/openmoko/arm/arm-angstrom-linux-gnueabi/usr/lib". You have to fix more than one .la file. For the pango error you have to change "libpangocairo-1.0.la", but there are more corrupt .la files.

Attached is a beta fix for the .la problem. Untar the .tar.bz2 as root, and execute the following bash script as root:

       #!/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.