Comment cross compiler pour ARM?


41

Comment configurer GCC pour la compilation croisée pour le processeur ARM? L'hôte serait sur x86_64 (AMD64 - Ubuntu 12.04) et la cible serait ARM (Raspberry Pi ainsi que Pandaboard - effectueront des compilations séparées pour chacun)?

Réponses:


44

Installer gcc-arm-linux-gnueabiet binutils-arm-linux-gnueabipaquets, puis il suffit d' utiliser au arm-linux-gnueabi-gcclieu de gccla compilation.

Vous devez faire attention au type de linux et de binutils que vous avez sur votre système cible. La dernière nouveauté est hardfloat, dans ce cas, vous feriez:

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

Cela introduit l'environnement complet de compilation croisée, y compris binutils.


Sur Ubuntu 13.10, vous obtenez gcc-4.7 pour 'gnueabi' et gcc-4.8 pour 'gnueabihf'.
novembre

quand j'ai essayé de compiler je n'ai openssl/ossl_typ.hpas trouvé d'erreur mais je l'ai déjà installé libssl-dev.
Necktwi

1
Si vous obtenez le code source apt-get source, apt-get build-depvous pouvez normalement compiler avec dpkg-buildpackage -b -uc -us -rY at-il un moyen de créer un fichier .deb aussi facilement pour ARM sans modifier le fichier Make?
Jonathan

@Maratyszcza, pourriez-vous être plus précis en ce qui concerne l'exécution de la ligne and then just use arm-linux-gnueabi-gcc instead of gcc for compilation? Lorsque je compile, j’utilise un appel vers makelequel AFAIK pointe naturellement /usr/lib/gccou quelque chose de proche. Comment appeler arm-linux-gnueabi-gcc directement?
Momergil

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

1

Le fournisseur d'images disque doit également fournir un compilateur croisé compatible.

C'est la seule méthode fiable.

Pour RPI en particulier, les compilateurs croisés fournis sont disponibles à l' adresse : https://github.com/raspberrypi/tools et peuvent être utilisés comme expliqué à l' adresse : https://raspberrypi.stackexchange.com/questions/64273/installing-raspberry- pi-cross-compiler / 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

Si vous choisissez à tort votre propre compilateur croisé, les événements suivants peuvent se produire:

Mon alternative préférée est de construire votre propre image avec Buildroot: https://stackoverflow.com/questions/47557262/how-to-download-the-torvalds-linux-kernel-master-recompile-it-and-boot-it- wi / 49349237 # 49349237 Cette version compile tout depuis la source et garantit que tout est compatible.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.