Как я могу кросс-компилировать ядро ​​на хосте Ubuntu?


16

Я хотел бы понять больше о том, как работает ядро. Часть этого состоит в том, чтобы собрать это непосредственно. Как я могу кросс-компилировать ядро ​​на хосте Ubuntu?

Ответы:


24

подготовка

Во-первых, нам нужно установить необходимые предпосылки. Я полагаю, у вас есть sudoдоступ.

sudo apt-get install git ncurses-dev make gcc-arm-linux-gnueabi
  • git система контроля версий, используемая командой ядра Linux
  • ncursesбиблиотека для создания консольных меню Это необходимо для menuconfig.
  • make запускает сборник для нас.
  • gcc-arm-linux-gnueabi это кросс-компилятор

Далее нам нужно получить источник, запустив:

git clone https://github.com/raspberrypi/linux raspberrypi-linux
cd raspberrypi-linux

Это клонирует исходный код в каталог с именем raspberrypi-linuxи изменит его на него.

компиляция

Сначала нам нужно переместить файл конфигурации, запустив

cp arch/arm/configs/bcmrpi_cutdown_defconfig .config

Затем настройте сборку ядра

make ARCH=arm CROSS_COMPILE=/usr/bin/arm-linux-gnueabi- oldconfig

Необязательно: Настройте сборку с помощью menuconfig

make ARCH=arm CROSS_COMPILE=/usr/bin/arm-linux-gnueabi- menuconfig

Затем запустите компиляцию

make ARCH=arm CROSS_COMPILE=/usr/bin/arm-linux-gnueabi- -k
Ссылки

1
Большое спасибо за предоставление альтернативы использованию crosstool-ng .
earthmeLon

В моем случае CROSS_COMPILE - просто префикс, поэтому должно быть достаточно следующего (без gcc в конце): make ARCH=arm CROSS_COMPILE=/usr/bin/arm-linux-gnueabi- -k
danger89

4

Я думаю, что Алекс прав, но gcc-arm-linux-gnueabi скомпилирован для процессора процессора без аппаратного модуля с плавающей запятой. Вы можете найти кросс-компилятор с поддержкой armhf по адресу : https://github.com/raspberrypi/tools и хорошим руководством, с которого можно начать здесь: http://hertaville.com/2012/09/28/development-environment- малина-пи-кросс-компилятор /


0

Официальная документация

https://www.raspberrypi.org/documentation/linux/kernel/building.md ( GitHub )

Я бы порекомендовал вам просто выполнить указанные там шаги или отправить запрос на извлечение, если что-то устарело или недостаточно ясно: эти инструкции, скорее всего, будут правильными и актуальными, поскольку они являются частью официальной документации проект.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.