User Tools

Site Tools


doc:appunti:prog:openmoko_compile

This is an old revision of the document!


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

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.

doc/appunti/prog/openmoko_compile.1255467872.txt.gz · Last modified: 2009/10/13 23:04 by niccolo