Кросс компилятор: различия между версиями
Stuw (обсуждение | вклад) Нет описания правки |
Stuw (обсуждение | вклад) |
||
Строка 55: | Строка 55: | ||
</pre> | </pre> | ||
[https://sourcery.mentor.com/public/gnu_toolchain/arm-none-linux-gnueabi/arm-2010q1-202-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2 Sourcery G++ Lite 2010q1-202 for ARM GNU/Linux] | [https://sourcery.mentor.com/public/gnu_toolchain/arm-none-linux-gnueabi/arm-2010q1-202-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2 Sourcery G++ Lite 2010q1-202 for ARM GNU/Linux] | ||
[http://sourcery.mentor.com/public/gnu_toolchain/arm-none-linux-gnueabi/arm-2011.03-41-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2 Sourcery G++ Lite 2011.03-41 for ARM GNU/Linux] | |||
[https://sourcery.mentor.com/GNUToolchain/package12813/public/arm-none-linux-gnueabi/arm-2014.05-29-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2 Sourcery CodeBench Lite 2014.05-29 for ARM GNU/Linux] | [https://sourcery.mentor.com/GNUToolchain/package12813/public/arm-none-linux-gnueabi/arm-2014.05-29-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2 Sourcery CodeBench Lite 2014.05-29 for ARM GNU/Linux] |
Текущая версия от 22:25, 18 июля 2015
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 G++ Lite 2011.03-41 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