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