Как кросс-компилировать для ARM?

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

41
задан 12 June 2018 в 23:52

2 ответа

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

Вы должны быть осторожны с тем, какой вкус Linux и binutils есть в вашей целевой системе. Новейшая вещь - hardfloat, в этом случае вы должны сделать:

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

Это создаст полную кросс-компиляцию, включая binutils.

0
ответ дан 12 June 2018 в 23:52

Поставщик образа диска также должен предоставлять совместимый кросс-компилятор

Это единственный надежный метод.

В частности, для RPI предоставленные кросс-компиляторы доступны по адресу: https://github.com/raspberrypi/tools и могут использоваться, как объяснено по адресу: https: // raspberrypi. stackexchange.com/questions/64273/install-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

Если вы неправильно выбрали собственный кросс-компилятор, может произойти следующее:

Моя любимая альтернатива - создать свой собственный образ с помощью Buildroot: https://stackoverflow.com/questions/ 47557262 / как загрузить файл torvalds-linux-kernel-master-пересобрать его и загрузить его wi / 49349237 # 49349237 Th является сборкой всего из исходного кода и гарантирует, что все совместимо.

0
ответ дан 12 June 2018 в 23:52

Другие вопросы по тегам:

Похожие вопросы: