Difference between revisions of "Кросс компилятор"

From Toshiba AC100 wiki
Jump to navigation Jump to search
(Fix Code Sourcery section view)
 
(One intermediate revision by the same user not shown)
Line 36: Line 36:
 
==Gentoo==  
 
==Gentoo==  
 
Особенности архитектуры выбирайте под вашу (будущую) систему - hardfloat, softfloat или unknown.
 
Особенности архитектуры выбирайте под вашу (будущую) систему - hardfloat, softfloat или unknown.
Все подробности есть [[@http://www.gentoo.org/proj/en/base/embedded/handbook/?part=1&chap=2|тут]]
+
Все подробности есть [http://www.gentoo.org/proj/en/base/embedded/handbook/?part=1&chap=2 тут]
 
<pre>
 
<pre>
 
$ sudo emerge crossdev
 
$ sudo emerge crossdev
Line 55: Line 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]
Line 95: Line 97:
  
 
===distcc===  
 
===distcc===  
TODO: описать более детально
+
TODO: описать более детально <br />
http://archlinuxarm.org/developers/distcc-cross-compiling
+
http://archlinuxarm.org/developers/distcc-cross-compiling <br />
http://archlinuxarm.org/developers/distributed-compiling
+
http://archlinuxarm.org/developers/distributed-compiling <br />

Latest revision as of 22:25, 18 July 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