Come eseguire la compilazione incrociata per ARM?


41

Come posso configurare GCC per la compilazione incrociata per il processore ARM? L'host sarebbe su x86_64 (AMD64 - Ubuntu 12.04) e il target sarebbe ARM (Raspberry Pi e Pandaboard - faranno compilazioni separate per ciascuno)?

Risposte:


44

Installa gcc-arm-linux-gnueabie binutils-arm-linux-gnueabipacchetti, quindi usa semplicemente arm-linux-gnueabi-gccanziché gccper la compilazione.

Devi stare attento a che sapore di linux e binutils hai sul tuo sistema di destinazione. Le cose più recenti sono hardfloat, in questo caso dovresti fare:

sudo apt-get install gcc-arm-linux-gnueabihf

Questo porta l'ambiente completo di compilazione incrociata, inclusi binutils.


Su Ubuntu 13.10 ottieni gcc-4.7 per 'gnueabi' e gcc-4.8 per 'gnueabihf'.
nobar,

quando ho provato a compilare non ho openssl/ossl_typ.htrovato errori anche se ho già installato libssl-dev.
Necktwi,

1
Se ottieni il codice sorgente da apt-get source, dopo apt-get build-depche puoi normalmente compilare con dpkg-buildpackage -b -uc -us -rEsiste un modo per creare un .deb così facilmente per ARM senza cambiare il makefile?
Jonathan,

@Maratyszcza potresti per favore essere più specifico riguardo all'esecuzione della linea and then just use arm-linux-gnueabi-gcc instead of gcc for compilation? Quando compilo uso una chiamata a makecui, naturalmente, AFAIK indica /usr/lib/gcco qualcosa di simile. Come potrei chiamare direttamente arm-linux-gnueabi-gcc?
Momergil,

9
@MomergilCC=arm-linux-gnueabihf-gcc make ...
Maratyszcza,

1

Il provider di immagini disco deve anche fornire un compilatore incrociato compatibile

Questo è l'unico metodo affidabile.

Per RPI in particolare, i cross compiler disponibili sono disponibili su: https://github.com/raspberrypi/tools e possono essere utilizzati come spiegato su: https://raspberrypi.stackexchange.com/questions/64273/installing-raspberry- pi-cross-compilatore / 83215 # 83215

git clone https://github.com/raspberrypi/tools
export PATH="$(pwd)/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin:${PATH}"
printf '#include <stdio.h>\nint main() { puts("hello world"); }\n' > hello_world.c
printf '#include <iostream>\nint main() { std::cout << "hello world" << std::endl; }\n' > hello_world.cpp
arm-linux-gnueabihf-gcc -std=c99 -o hello_world_c hello_world.c
arm-linux-gnueabihf-g++ -std=c++11 -o hello_world_cpp hello_world.cpp

Se si sceglie erroneamente il proprio compilatore incrociato, potrebbe accadere quanto segue:

La mia alternativa preferita è costruire la tua immagine con Buildroot: https://stackoverflow.com/questions/47557262/how-to-download-the-torvalds-linux-kernel-master-recompile-it-and-boot-it- wi / 49349237 # 49349237 Questo crea tutto dalla fonte e garantisce che tutto sia compatibile.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.