Кросс компилятор

Материал из Toshiba AC100 wiki
Перейти к навигации Перейти к поиску

Debian

Используйте репозиторий emdebian. Просто добавьте его (можете поменять название) :

#
# -- Emdebian sources.list entries
#
deb http://www.emdebian.org/debian/ wheezy main
deb http://www.emdebian.org/debian/ sid main

и установите gcc-4.4-arm-linux-gnueabi :

$ sudo apt-get install emdebian-archive-keyring
$ sudo apt-get update
$ sudo apt-get install gcc-4.4-arm-linux-gnueabi

так же может понадобиться сделать линк sudo ln /usr/bin/arm-linux-gnueabi-gcc-4.4 /usr/bin/arm-linux-gnueabi-gcc

Ubuntu

$ sudo apt-get install gcc-arm-linux-gnueabi

Как минимум в Ubuntu 11.10 есть пакет gcc-arm-linux-gnueabihf

Установка Linaro toolchain в Ubuntu

Включение репозитария:

$ sudo add-apt-repository ppa:linaro-maintainers/toolchain

Установка компилятора и зависимостей:

$ sudo apt-get install libc6-armel-cross libc6-dev-armel-cross
$ sudo apt-get install binutils-arm-linux-gnueabi gcc-4.6-arm-linux-gnueabi g++-4.6-arm-linux-gnueabi

Gentoo

Особенности архитектуры выбирайте под вашу (будущую) систему - hardfloat, softfloat или unknown. Все подробности есть тут

$ sudo emerge crossdev
$ sudo crossdev --target armv7a-hardfloat-linux-gnueabi

Компиляция пользовательских программ с использованием debootstrap

Другие

Code Sourcery

Код установки основан на скриптах используемых в linux4tegra 12alpha1

$ echo "Downloading and installing Sourcery G++ Lite."
$ wget http://www.codesourcery.com/sgpp/lite/arm/portal/\
package4571/public/arm-none-linux-gnueabi/\
arm-2009q1-203-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2
$ tar xvjf arm-2009q1-203-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2

Sourcery G++ Lite 2010q1-202 for ARM GNU/Linux

Sourcery CodeBench Lite 2014.05-29 for ARM GNU/Linux

Настройка переменных окружения

$ export PATH=`pwd`/_out/3rdparty/arm-2009q1/bin:$PATH

Теперь можно использовать ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- для кросскомпиляции ядра под ARM.

Чтобы не модифицировать PATH, можно указывать полный путь в переменно CROSS_COMPILE: например CROSS_COMPILE="$PWD"/_out/3rdparty/arm-2009q1/bin/arm-none-linux-gnueabi-

crosstool-ng

Качаем и собираем crosstool-ng. Права root ненужны.

mkdir cross
cd cross
wget http://crosstool-ng.org/download/crosstool-ng/crosstool-ng-1.13.0.tar.bz2
tar -xjf crosstool-ng-1.13.0.tar.bz2
cd crosstool-ng-1.13.0/
./configure --prefix=/home/your_user/cross
make
make install

Далее необходимо подготовить .конфиг crosstool-ng. Можно сконфигурировать как kernel, через menuconfig. Можно взять уже готовые конфигурации.

cd /home/your_user/cross/bin/
wget http://archlinuxarm.org/mirror/development/ct-ng/xtools-config-[v5|v7]
mv xtools-config-[v5|v7] .config
./ct-ng build

Соответственно выбираем либо 5 либо 7 в зависимости от необходимой платформы. Тулчейн после достаточно длительной сборки установится в директорию пользователя:

~/x-tools #for armv5
~/x-tools7h #for armv7 (hard-float)

Если необходимо его можно перенести в другую директорию.

distcc

TODO: описать более детально
http://archlinuxarm.org/developers/distcc-cross-compiling
http://archlinuxarm.org/developers/distributed-compiling