Рубрики
dev

arm toolchain / crosstool-ng / gcc

0. Настройка crosstool-ng и сборка

# 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:

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.Пример сборка ядра:


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

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