0. Настройка crosstool-ng и сборка
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
# ubuntu # apt-get install gcc-arm-none-eabi gdb-arm-none-eabi libnewlib-doc stm21flash git gcc make cmake libusb-1.0-0-dev # для archlinux # pacman -Sy arm-none-eabi-gcc arm-none-eabi-gdb stm32flash gcc make cmake git cvs aria2 ncurses help2man git clone https://github.com/crosstool-ng/crosstool-ng cd crosstool-ng # Проверяем доступные версии git tag # Меняем на версию 1.26.0 git checkout crosstool-ng-1.26.0 # Сначала выполняем ./bootstrap #Конфигурируем и собираем ( флаг enable-local нужен, чтобы использовать инструмент прямо в локальной папке, без установки в систему) ./configure --enable-local # Как только конфигуратор выдаст # Now run: # make # переходим к сборке make |
1. Подготовка toolchain:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
0. Проверяем доступные ./ct-ng list-samples 1. выбираю архитектуру ARM, пусть будет arm-unknown-eabi и собираю тулчейн ./ct-ng arm-unknown-linux-gnueabi # если требуется что то еще добавить # ./ct-ng menuconfig 2. собираем ./ct-ng build 3. Смотрим на результат в папке ~/x-cross в папке lib будут все собранные для тулчейна библиотеки в папке include - все заголовочные файлы в папке bin - все компиляторы и утилиты Никто не мешает нам собрать с помощью crosstool-ng несколько тулчейнов с разными конфигурациями, все они попадут в соответствующую папку ~/x-tools/ ну и потом можно попробовать каждый из компиляторов, выбрать какой-то один, которым пользоваться. !!! ~/x-cross будет в корне директории вашего пользователя Проверка: # для полстоянки строку export можно добавить в ~/.bashrc или ~/.pam_environment. export PATH=$PATH:$HOME/x-tools/arm-unknown-linux-gnueabi/bin arm-unknown-linux-gnueabi-gcc -v |
2.Пример сборка ядра:
1 2 3 4 5 6 7 8 9 10 11 12 |
cd /opt wget http://www.kernel.org/pub/linux/kernel/v3.0/linux-3.2.tar.bz2 tar xjf linux-3.2.tar.bz2 cd linux-3.2 make ARCH=arm Universal_defconfig make ARCH=arm Menuconfig Последняя команда вызывает меню конфигурации ядра, перейдите в раздел "Kernel Features", установите флажок "Use the ARM EABI to compile", а затем выйдите (обязательно сохраните изменения). Скомпилируем ядро: make ARCH=arm CROSS_COMPILE=arm-unknown-linux-gnueabi- all |
3. Пример с BusyBoX
1 2 3 4 5 |
wget http://busybox.net/downloads/busybox-1.19.3.tar.bz2 tar xjf busybox-1.19.3.tar.bz2 cd busybox-1.19.3 make ARCH=arm CROSS_COMPILE=arm-unknown-linux-gnueabi- defconfig make ARCH=arm CROSS_COMPILE=arm-unknown-linux-gnueabi- install |