Cross-compilazione in cygwin per Raspberry-pi: ./configure e CMake

Mi sto proprio divertendo in questi giorni con la Raspberry-Pi! Dato che ho generato la mia tool chain per cross-compilare da Windows con cygwin ed impostato il mio IDE, ho finalmente iniziato a compilare qualche software ed effettuare qualche porting. Tuttavia ho dovuto affrontare un paio di questioni che mi hanno fatto perdere la mattinata, ovvero da cygwin come compilo un software per Raspberry-Pi usando configure, make e make install mediante la tool chain che ho generato? E sempre da cygwin, come obbligo CMake ad utilizzare la tool chain da me generata?

Da cygwin, come compilo un software per Raspberry-Pi usando configure, make e make install mediante la tool chain che ho generato?

Se la tool chain è in /opt/cross/x-tools/arm-unknown-linux-gnueabi allora imposto manualemente il percorso dei vari strumenti eseguendo questo particolare comando (basta copiarlo ed incollarlo nella shell!):

[code lang=”bash”]
CC=/opt/cross/x-tools/arm-unknown-linux-gnueabi/bin/arm-unknown-linux-gnueabi-gcc \
CXX=/opt/cross/x-tools/arm-unknown-linux-gnueabi/bin/arm-unknown-linux-gnueabi-g++ \
LD=/opt/cross/x-tools/arm-unknown-linux-gnueabi/bin/arm-unknown-linux-gnueabi-ld \
RANLIB=/opt/cross/x-tools/arm-unknown-linux-gnueabi/bin/arm-unknown-linux-gnueabi-ranlib \
STRIP=/opt/cross/x-tools/arm-unknown-linux-gnueabi/bin/arm-unknown-linux-gnueabi-strip \
CFLAGS="-I/opt/cross/x-tools/arm-unknown-linux-gnueabi/include" \
LDFLAGS="-L/opt/cross/x-tools/arm-unknown-linux-gnueabi/lib" \
./configure \
–host=arm-unknown-linux-gnueabi \
–target=arm-unknown-linux-gnueabi \
–build=i686-pc-cygwin \
–prefix=$HOME/arm-pi
[/code]

Se la configurazione termina con successo, eseguendo make e make install sarà possibile compilare ed installare il software generato.

Da cygwin, come obbligo CMake ad utilizzare la tool chain da me generata?

Semplicemente passando a CMake il percorso del “tool chain file”, ovvero un file che permette a CMake di conoscere gli strumenti presente nella tool chain e la loro posizione.

  1. Scarichiamo il tool chain file dal mio repository su github (QUI) e salviamolo in /home/<username>.
  2. Apriamo il tool chain file e modifichiamo la riga
    set(ARMRPI_TOOLCHAIN_ROOT /opt/cross/x-tools/arm-unknown-linux-gnueabi) con il giusto percorso della tool chain.
  3. Portiamoci nella cartella del progetto da compilare ed eseguiamo il comando cmake -DCMAKE_TOOLCHAIN_FILE=/home/<username>/arm-pi.toolchain.cmake -G”Unix Makefiles”.

Se tutto è andato bene, CMake avrà generato i file di progetto compilabili utilizzando la nostra tool chain!