Як перехрестити компіляцію для ARM?


41

Як встановити GCC для перехресного компіляції для процесора ARM? Хост був би на x86_64 (AMD64 - Ubuntu 12.04), а ціль буде ARM (Raspberry Pi, а також Pandaboard - буде робити окремі компіляції для кожного)?

Відповіді:


44

Встановіть gcc-arm-linux-gnueabiі binutils-arm-linux-gnueabiпакуйте, а потім просто використовуйте arm-linux-gnueabi-gccзамість gccкомпіляції.

Вам потрібно бути обережним, який аромат Linux та бінутів у вашій цільовій системі. Найновіший матеріал - це тверда шерсть, у цьому випадку ви б зробили:

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

Це приносить повне середовище перехресного компіляції, включаючи бінутили.


У Ubuntu 13.10 ви отримуєте gcc-4.7 для 'gnueabi' і gcc-4.8 для 'gnueabihf'.
nobar

коли я намагався компілювати, я openssl/ossl_typ.hне знайшов помилку, хоча я вже встановив libssl-dev.
Necktwi

1
Якщо ви отримуєте вихідний код apt-get source, після того, як apt-get build-depви можете просто просто компілювати з dpkg-buildpackage -b -uc -us -rЧи є спосіб створити .deb це легко для ARM, не змінюючи makefile?
Джонатан

@Maratyszcza, будь ласка, будьте більш конкретні щодо виконання рядка and then just use arm-linux-gnueabi-gcc instead of gcc for compilation? Коли я компілюю, я використовую дзвінок, на makeякий, AFAIK, природно вказує на /usr/lib/gccщось подібне. Як я можу викликати arm-linux-gnueabi-gcc безпосередньо?
Момергіль,

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

1

Постачальник зображень на диску також повинен забезпечити сумісний компілятор з перехресними системами

Це єдиний надійний метод.

Зокрема, для RPI надані перехресні компілятори доступні за посиланням: https://github.com/raspberrypi/tools і можуть бути використані, як пояснено на веб-сторінці : https://raspberrypi.stackexchange.com/questions/64273/installing-raspberry- пі-крос-компілятор / 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

Якщо ви вибрали власний крос-компілятор неправильно, може статися таке:

Моя улюблена альтернатива - створити власний образ за допомогою Buildroot: https://stackoverflow.com/questions/47557262/how-to-download-the-torvalds-linux-kernel-master-recompile-it-and-boot-it- wi / 49349237 # 49349237 Це створює все з джерела та гарантує, що все сумісне.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.