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 si possono usare queste istruzioni: Openmoko application development in 5 minutes, si devono installare preventivamente i pacchetti:

  • ccache

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.

Eseguiamo l'operazione con openmoko-i686-20090323-armv4t-linux-gnueabi-toolchain-openmoko.tar.bz2 (pacchetto per i686, per compilare codice arm su piattaforma GNU/Linux):

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 (es. dalla libreria edje) la si installa:

. /usr/local/openmoko/arm/environment-setup
opkg-target update
opkg-target list |grep edje-dev
opkg-target install libedje-dev

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.1255454293.txt.gz · Last modified: 2009/10/13 17:18 by niccolo