Сборка основного toolchain

Сборка основной среды сборки является важным этапом для разработки. Т.к. это компилятор и сборщик и другие утилиты которое участвуют в разработке непосредственно, то этому этапу стоит уделить особое внимание.

Определимся с целью - необходим gcc, под архитектуру arm, без поддержки аппаратных операций с плавающей точкой, библиотека функций glibc, система eabi: gnu. Соответственно полное название toolchain следуя определению будет: arm-softfloat-linux-gnueabi.

Для начала установим crossdev, он нужен для упрощения и систематизации сборки toolchain под интересующую архитектуру:

jane ~ # emerge crossdev

После сборки cross-dev, можно используя его собирать новый toolchain. Для этого укажем утилите crooss-dev какой именно toolchain мы хотим:

jane ~ # crossdev arm-softfloat-linux-gnueabi

После этого toolchain полностью собран и готов к использованию:

nis@jane ~ $ arm-softfloat-linux-gnueabi-gcc --version

arm-softfloat-linux-gnueabi-gcc (Gentoo 4.6.2 p1.4, pie-0.5.0) 4.6.2

Copyright (C) 2011 Free Software Foundation, Inc.

Это свободно распространяемое программное обеспечение. Условия копирования

приведены в исходных текстах. Без гарантии каких-либо качеств, включая

коммерческую ценность и применимость для каких-либо целей.

Типичные ошибки которые могут возникать при сборке:

1) Не собирается gcc - в логе ошибок указанно что нельзя использовать одновременно cxx и nocxx или -cxx и -nocxx.

Решением является установка -cxx вместо nocxx в файле /etc/portage/package.use для портажа cross-arm-softfloat-linux-gnueabi/gcc, и затем собрать gcc и glibc вручную.

jane ~ # emerge cross-arm-softfloat-linux-gnueabi/gcc cross-arm-softfloat-linux-gnueabi/glibc

2) Не устанавливаются linux-headers, в логе ошибок указано что имеются ошибки для файлов хидеров.

Решением является сначала удаление а затем установка linux-headers вручную(данная ошибка проявляется при обновлении хидеров ядра с ветки 2.6.x на ветку 3.x).

jane ~ # emerge -C cross-arm-softfloat-linux-gnueabi/linux-headers; emerge cross-arm-softfloat-linux-gnueabi/linux-headers