Сборка основного 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


Comments