LINUX.ORG.RU

[Toolchain][ARM] Как собрать?

 ,


3

4

Вот скрипт который собирает тулчейн для arm-linux-gnueabi- архитектуры из последних версий гнутых инструментов. Как не странно все не так сложно, потребовалось тако три небольших костылика на уровне скрипта сборки, в остальном НИКАКИХ патчей на ванильные утилиты. Собираются С и С++ кросс компиляторы + кросс отладчик и отладочный сервер для целевой архитектуры. Для работы скрипта нужно чтобы в системе стоял набор пакетов разработчика достаточный для компиляции GCC 4.5 версии, а именно GMP + MPFR + MPC + PPL + CLOOG (версии можно уточнитьв мурзилке по сборке gcc). В OpenSUSE 11.3 все необходимое есть из коробки (если поставить через YAST или zypper).

Скрипт можно взять здесь:
http://www.antario.org.ru/downloads/build-toolchain

Использование:
./build-toolchain <директория установки тулчена> [get]

в директорию установки вы должны уметь писать, не в какие переменные среды её прописывать не надо. Указав вторым параметром слово get скрипт сам скочает сырцы если у вас из нет. Логи сборки с ошибками записываются в файлы build.log в соответствующих директориях. Перед сборкой никаких подкаталогов build существовать не должно!

Адаптация под другие версии утилит возможны путем замены соответствующих циферок в скрипте, если версии не сильно отличаются то скорее всего все пройдет успешно. Я тестировал на:
linux-2.6.36
binutils-2.20.1
gcc-4.5.1
glibc-2.11.2 (для 2.12 нету портов пока :( )
gdb-7.2
Возможно заменить и саму целевую архитектуру arm-none-linux-gnueabi на что-нибудь другое что поддерживает glibc. Однако для архитектуры отличной от arm возмоно придется поправить спецификацию (переменная TARGET_SPECS, ато штука служит для прямого указания скриптам configure от glibc на наличие/отсутствие некоторых возможностей на целевой архитектуре, так как пока не собрана финальная вермися самой glibc компилер не может проверить их наличие напрямую - тесовые программы не слинкуются!)

ЗЫ: Вся эта деятельность навеяна тем что crosstool-ng 4.4 версию gcc собирают через откровенную жопу - например работоспособный busybox она собрать не в силах. 4.5 вообще пока не знают. Правды ради нужно сказать что 4.3 версия работает нормально, но старовата (не некоторых фишек от плюсов). И еще crosstool-ng занимается фигней собирая (часто через задницу) вспомогательные либы для gcc которые прекрасно можно найти и в самой системе.

ЗЫЫ: Скрипт написан без применения вертолетостроительного шел программирования так что потенциально его понять может любой желающий.

Ответ на: комментарий от anonymous2

Сия полупроприетарная надстройка (есть организации запрещающие использовать подобные инструменты) не всегда подходит, особенно когда клиент требует полных алгоритмов сбора ОС из сырцов (Как там Glibc собран в этом codesoucery? ну не совсем на поверхности) + есть жесткие требования к версиям как инструментов так и билиотек. И еще некоторое количство «левых» патчей не всегда способствуют решению проблем.

ЗЫ: Про время и проффесионалов - проффессионал должен знать и уметь делать некоторые вещи сам, а не прикрываться недостатком времени, которого для сборки тулчейна нужно всего час десять минут (как раз можно сходить пообудать пока машина работает).

mskmsk1985
() автор топика
Ответ на: комментарий от anonymous

Специально для гентушников сообщаю что этого нет в некоторых не генто-православных дистрах и врятли в мое зюзе вообще заработает (вернее не заработает вовсе, проверено).

mskmsk1985
() автор топика
Ответ на: комментарий от Dead

Пробывал, мне нужен был 4.5 gcc там поддержка c++ox меня более устраивает. Не один готовый тулчейн 4.5 не предоставляет. В итоге научился собирать сие чудо сам, поделился с обществом ничего более не преследовалось. Найти это в гугле тоже не совсем тривиально и тока кусками.

mskmsk1985
() автор топика
Ответ на: комментарий от RVictor

А, уже нашёл (правильно поставленный вопрос - половина ответа): -mcpu=cortex-m3.

«Надо брать.»

RVictor
()
Ответ на: комментарий от mskmsk1985

Хм, чуть больше года назад uClibc точно был. После не пробовал. Причем все достаточно удобно конфигурировалось с учетом зависимостей и перекрестных опций.

ly
()
Ответ на: комментарий от ly

Сорри, запятую посеял. Надо было так: Нет, там uClibc... Там нет последних версий glibc под которые причесан Qt 4.7

mskmsk1985
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.