This is an old revision of the document!
Table of Contents
Cross compile per OpenMoko
Per compilare un'applicazione per il FreeRunner su sistema operativo OpenMoko possiamo scegliere tre strade:
- Qemu. È possibile eseguire l'intero sistema opertativo OpenMoko sotto Qemu, tuttavia l'hardware GTA02 (FreeRunner) non è pienamente supportato. Inoltre le utility fornite a corredo dell'emulatore sono scritte per il GTA01 (Neo1972), pertanto la strada per avere l'emulatore funzionante non è semplice. L'emulazione del GTA01/GTA02 non è inclusa nella distrubuzione ufficiale Qemu, bisogna scaricare i sorgenti dal repository SVN apposito.
- MokoMakeFile. Si tratta di uno script che provvede a scaricare e configurare un ambiente completo derivato da OpenEmbedded. Il progetto è considerato obsoleto.
- Toolchain. Questa è la strada consigliata sia per lo sviluppo di una singola applicazione che per un'intera distrubuzione. Consente di compilare codice arm su piattaforma i686 o amd64.
Installare la toolchain
Per installare la toolchain su Debian Lenny si sono seguite queste istruzioni: Openmoko application development in 5 minutes.
Si installano preventivamente i pacchetti:
apt-get install alien autoconf automake autotools-dev build-essential ccache check curl \ fakeroot gettext intltool libgconf2-dev libglib2.0-dev libtool libxrender-dev mtools uboot-mkimage
Si scarica la toolchain precompilata dal repository OpenMoko, esiste la versione i686 e amd64, il pacchetto non è rilocabile e va in /usr/local/openmoko
. Invece di installare il tarball, lo si trasforma in uno pseudo pacchetto .deb facilmente (dis)installabile.
Scegliamo openmoko-i686-20090323-armv4t-linux-gnueabi-toolchain-openmoko.tar.bz2 (pacchetto per i686, per compilare codice arm su piattaforma GNU/Linux) ed eseguiamo:
bunzip2 openmoko-i686-20090323-armv4t-linux-gnueabi-toolchain-openmoko.tar.bz2 gzip openmoko-i686-20090323-armv4t-linux-gnueabi-toolchain-openmoko.tar fakeroot alien -d openmoko-i686-20090323-armv4t-linux-gnueabi-toolchain-openmoko.tar.gz
Il pacchetto .deb risultante è installabile con
sudo dpkg -i openmoko-i686_20090323-2_all.deb
Usare la toolchain
Prima di compilare qualcosa si deve settare l'environment giusto (PATH
, CPPFLAGS
, CXXFLAGS
, LDFLAGS
, ecc.):
source /usr/local/openmoko/arm/environment-setup
Quindi si usa il compilatore apposito
arm-angstrom-linux-gnueabi-gcc -o test test.c
Un'ipotetico Makefile
potrebbe contenere qualcosa del tipo:
export CC = arm-angstrom-linux-gnueabi-gcc binary: $(CC) -o test test.c
Installazione delle dipendenze
Se il programma da compilare dipende da una libreria OpenMoko, bisogna installarla nella toolchain. Prima di tutto si deve impostare i repository da cui attingere in /usr/local/openmoko/arm/arm-angstrom-linux-gnueabi/etc/opkg.conf
.
L'impostazione predefinita prevede di scaricare da unstable, ecco invece come scaricare i pacchetti da 2008.12:
arch all 1 src/gz all http://downloads.openmoko.org/repository/Om2008.8/all arch armv4t 26 src/gz armv4t http://downloads.openmoko.org/repository/Om2008.8/armv4t arch om-gta02 31 src/gz om-gta02 http://downloads.openmoko.org/repository/Om2008.8/om-gta02
Ecco l'esempio di come installare un pacchetto -dev:
. /usr/local/openmoko/arm/environment-setup opkg-target update opkg-target list opkg-target install gpsd-dev
L'elenco dei pacchetti disponibili viene salvato in /usr/local/openmoko/arm/arm-angstrom-linux-gnueabi/usr/lib/opkg/lists/
.
I pacchetti vengono installati sotto /usr/local/openmoko/arm/arm-angstrom-linux-gnueabi/
.
Compiling a large project: Navit
Please, improve the page Navit on FreeRunner.
First of all, edit the /usr/local/openmoko/arm/environment-setup
script and add the followig line:
export OMTOOL_DIR=/usr/local/openmoko
After toolchain installation, install (with opkg-target
) some OpenMoko -dev
packages required to compile Navit:
. /usr/local/openmoko/arm/environment-setup opkg-target install gpsd-dev opkg-target install gtk+-dev opkg-target install libspeechd-dev
Now we check-out Navit sources from the SVN repository and run om-conf
to prepare the automake
, autoconf
and make
files to run into the OpenMoko toolchain:
svn co https://navit.svn.sourceforge.net/svnroot/navit/trunk om-conf navit
It's time to cross-compile:
cd trunk/navit make
Creare un pacchetto .opk
Simply do an:
svn co http://svn.openmoko.org/trunk/src/host/opkg-utils
and use the instructions of ipkg's website but the software from this checkout, the opkg-build.