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