lunedì 31 agosto 2009

Compilare gpsd 2.39 sulla Beagleboard

Istruzioni preliminari, proverò poi a tradurle in inglese quando tutto funziona bene.

Tragicamente, un opkg install gpsd tenterebbe di installare un sacco di paccottiglia di freesmartphone.org che sulla Beagleboard non serve a un tubo. Per cui è meglio compilare gpsd dai sorgenti originali.

Dunque:
* parto da un'installazione Angstrom con la Narcissus
* avendo ovviamente cura di selezionare "machine=Beagleboard"
* non dimenticando di installare "development: Toolchain"

Ho già sulla memory card della Beagleboard i sorgenti di gpsd:
* prelevati i sorgenti (stable release 2.39) dal sito ufficiale

Importante: occorre connettersi a internet dalla Beagleboard ed installare un po' di pacchetti "development". Per connettermi alla macchina Linux (che è già su internet e fa già masquerading) mi è bastato dare sulla Beagleboard (agganciata alla USB della macchina Linux):

ifconfig usb0 192.168.0.22
route add default gw 192.168.0.1

e dare ovviamente l'ifconfig per 192.168.0.1 sulla macchina Linux.

Per installare i pacchetti mancanti è bastato eseguire sulla Beagleboard:

opkg install libxext-dev libxpm-dev
opkg install dbus-dev ncurses-dev 
opkg install libdbus-glib-1-dev

Nota: l'installazione di alcuni di questi produce una carretta di "unsatisfied recommendation", ma sembra che non creino problemi.

Purtroppo, per qualche strano motivo, è indispensabile anche eseguire questi due comandi e allargare a dismisura CFLAGS e LDFLAGS, altrimenti la compilazione si blocca:

cd /lib
ln -s /usr/lib/libstdc\+\+.la .

Avviato quindi Linux Angstrom sulla Beagleboard, entro in login e compilo:

Nota: se durante il "configure" esce un messaggio di errore "libtool: link: cannot find the library `/lib/libstdc++.la'" oppure un messaggio di warning "xgps won't be built" vuol dire che avete dimenticato di eseguire gli opkg di cui sopra.

cd /tmp
tar xpjf gpsd-2.39.tar.gz
cd gpsd-2.39
export CFLAGS="-mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp -march=armv7-a -I/usr/include/X11 -I/usr/include/glib-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/glib-2.0/include -I/usr/lib/dbus-1.0/include"
export LDFLAGS="-L/usr/lib -L/lib -ldbus-1 -ldbus-glib-1"
./configure --prefix=/usr --enable-dbus
make
make install

Nota bene:

1) il "make install" ha bisogno di privilegi root;

2) la compilazione dura pochi minuti; purtroppo xgpsspeed, xgps, etc non vengono compilati perché nella Angstrom Narcissus mancano le librerie Lesstiflibxaw e affini.

Dunque gli eseguibili utili, alla fine, sono:
- sotto sbin: gpsd
- sotto bin: cgps  gpsctl  gpsdecode  gpsflash  gpsmon  gpspipe  gpxlogger  lcdgps

***

1 commento:

  1. Correzione: la libXaw pare esserci, ma le librerie compatibili Motif (cioè la Lesstif, cioè Xm/Xm.h etc) non le trovo in nessun "opkg".

    RispondiElimina