Перекрестная Компиляция с Linaro 7.1.1 arm-linux-gnueabihf

Как я могу правильно загрузить linaro набор инструментальных средств и настроить его так, чтобы я мог использовать его с Make-файлом ядра? Когда я тестирую свою версию на arm-linux-gnueabihf-gcc --version функционируйте это работает, но при компиляции пользовательского ядра это перестало работать.


Контекст

Я работаю для компиляции пользовательского ядра Linux для Доски Beaglebone. Руководство, за которым я следую для создания пользовательского ядра, здесь.

При выполнении шагов для руководства я должен использовать arm-linux-gnueabihf-gcc для пересечения, компилируют ядро для аппаратных средств Beaglebone. Таким образом, я установил набор инструментальных средств linaro с их веб-сайта. Я просто загрузил его и затем распаковал его к /opt/ папка.

$ cd /opt/
$ sudo mv gcc-linaro-7.1.1-2017.08-x86_64_arm-linux-gnueabi.tar.xz/ gcc-arm-linux
$ export PATH=$PATH:/opt/gcc-arm-linux/bin

Я тестирую и удостоверяюсь, что вещи работали в установке.

$ arm-linux-gnueabihf-gcc - версия

И мой вывод похож на следующее изображение:

arm-linux-gnueabihf-gcc version

После того как я закончен с этим, я компилирую ядро с помощью стандартного Make-файла.

$ cd ~/linux
$ sudo make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- bb.org_defconfig
$ sudo make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- uImage dtbs LOADADDR=0x80008000 -j4

В этой точке я сталкиваюсь с ошибками на команде для фактической компиляции ядра.

Makefile:686: Cannot use CONFIG_CC_STACKPROTECTOR_STRONG: -fstack-protector-strong not supported by compiler
make: arm-linux-gnueabihf-gcc: Command not found
  CHK     include/config/kernel.release
  CHK     include/generated/uapi/linux/version.h
  CC      scripts/mod/empty.o
/bin/sh: 1: arm-linux-gnueabihf-gcc: not found
scripts/Makefile.build:258: recipe for target 'scripts/mod/empty.o' failed
make[2]: *** [scripts/mod/empty.o] Error 127
scripts/Makefile.build:403: recipe for target 'scripts/mod' failed
make[1]: *** [scripts/mod] Error 2
make[1]: *** Waiting for unfinished jobs....
Makefile:556: recipe for target 'scripts' failed
make: *** [scripts] Error 2
make: *** Waiting for unfinished jobs....

То, что наиболее сбивает с толку, - то, что ошибки указывают на это arm-linux-gnueabihf-gcc: not found, однако я могу выполнить команду arm-linux-gnueabihf-gcc --version в той же папке и это выполнится правильно.

Решение этой проблемы могло быть, чтобы просто установить его с помощью склонного:

sudo apt-get install gcc-arm*

Который предлагается в этом ответе, но это не разрешает мой беспорядок.

Почему я могу протестировать свою версию на arm-linux-gnueabihf-gcc функционируйте, но это не выполняется в Make-файле правильно? Как я могу правильно загрузить linaro набор инструментальных средств и настроить его так, чтобы я мог использовать его с Make-файлом ядра?

0
задан 9 March 2018 в 02:58

1 ответ

Не уверенный, если это - та же проблема как я, но я приехал через это сообщение при поиске ответа на мою собственную проблему.

Я столкнулся с подобной проблемой при использовании более старого кросс-компилятора руки Linux из контейнера докера. Проблемой была перекрестная компиляция gcc, двоичный файл был 32-разрядным, и контейнерное выполнение делают, было 64-разрядным. Сделать сценарий сообщал "arm-linux/gcc не найденный"

Можно проверить, является ли это 32-разрядным путем выполнения

file absolute-path-to-gcc

например,

root@b61b0b938b8a:~# file /usr/local/arm-linux/bin/gcc
/usr/local/arm-linux/bin/gcc: ELF 32-bit LSB  executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.2.5, stripped

Для фиксации этого, я должен был добавить i386 к контейнеру докера, как в этом вопросе

sudo apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386
0
ответ дан 1 November 2019 в 05:24

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

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