суббота, 24 декабря 2011 г.

Сборка toolchain для arm в linux Gentoo

Для начала определимся с тем что же мы хотим собрать. У меня к примеру цель сборки была - универсальный компилятор со стандартной библиотекой glibc.

Сборка будет происходить в ос Gentoo linux.
Для начала нам понадобится crossdev
nis@jane ~ $ su - получим права суперпользователя для установки

jane ~ # emerge crossdev - установим кросс-дев(среда компилятора, стандартной библиотеки и пр.,)

После установки кросс-дев приступим к сборке среды разработки.

jane ~ # crossdev arm-softfloat-linux-gnueabi - соберём binutils, linux-headers, gcc и glibc под архитектуру arm, с программной поддержкой вычислений с плавающей точкой(запятой) и стандартной библиотекой glibc, тип eabi - gnu.

после сборки среды разработки можно установить нужный дополнительный софт - ide, терминалы и пр.

для себя я собрал minicom - с ним в комплекте идёт набор xyz-modem, и gtkterm - удобный графический терминал.

jane ~ # emerge minicom gtkterm

Если возникли проблемы при сборке среды разработки:
1) Не собирается гцц - в логе ошибок указанно что нельзя использовать одновременно 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