View source for Toolchain/fr
From Openmoko
You do not have permission to edit this page, for the following reasons:
You can view and copy the source of this page:
Templates used on this page:
Return to Toolchain/fr.
You do not have permission to edit this page, for the following reasons:
You can view and copy the source of this page:
Templates used on this page:
Return to Toolchain/fr.
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à |
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 :
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 :
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
sudo apt-get install uboot-mkimage
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.
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:
mkdir ~/sources cd ~/sources
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 :
cd / tar -xjvf ~/sources/openmoko-XYZ-arm-linux-gnueabi-toolchain.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
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
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.
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.
. /usr/local/openmoko/arm/environment-setup
opkg-target update
opkg-target list |grep edje-dev
opkg-target install libedje-dev
Choisissez un répertoire de destination (dans cet exemple ~/) puis :
cp -r /usr/local/openmoko/source/openmoko-sample2 ~/
. /usr/local/openmoko/arm/setup-env
om-conf openmoko-sample2
cd openmoko-sample2
make
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
In order to build your own project by using openmoko-sample2 files, some changes are needed:
cp -r /usr/local/openmoko/source/openmoko-sample2 ~/
mv openmoko-sample2 your-project-name cd your-project-name cd src rm *.c
cp your-sources . cd ..
PKG_NAME="your-project-name"
AC_INIT(your-project-name, 0.0.1, http://www.openmoko.org/) AC_CONFIG_SRCDIR(src/main.c)
cd data mv openmoko-sample.png your-project-name.png mv openmoko-sample.desktop your-project-name.desktop
dist_desktop_DATA = your-project-name.desktop dist_appicon_DATA = your-project-name.png
dist_desktop_DATA = your-project-name.desktop dist_appicon_DATA = your-project-name.png
Name=your-project-name Encoding=UTF-8 Version=0.0.1 Type=Application Exec=your-project-name
Icon=your-project-name
cd .. cd src
bin_PROGRAMS = your-project-name your_project_name_SOURCES = \ main.c your_project_name_LDADD = @DEPENDENCIES_LIBS@
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}
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 :
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.
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.
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.
If you have written a cool application which you want to share with others, the best way to do that is to
See also Customizing the Openmoko Distribution.
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