Существует два подхода, которые я использовал для инструментов ARM/Linux. Самое легкое должно загрузить предварительно созданный набор инструментальных средств непосредственно.
Pro: Это просто работает, и можно продолжить интересную часть проекта
Con : Вы застреваете с тем, какой бы ни версия gcc/binutils/libc, который они выбрали
, Если более поздние вопросы Вам, проверьте crosstool-ng. Этот проект является инструментом конфигурирования, подобным приложению конфигурирования ядра Linux. Набор, какие версии gcc, binutils, libc (GNU или uCLibc), поточная обработка и ядро Linux для создания и crosstool-ng делают остальных (т.е. загружает шары tar, настраивает инструменты и создает их).
Pro: Вы получаете точно, что Вы выбрали во время конфигурации
Con: Вы получаете точно, что Вы выбрали во время конфигурации
значение, что Вы берете полную ответственность за выбор compiler/binutil/libc и их связанных функций/недостатков/ошибок. Кроме того, как упомянуто в комментариях, существует некоторая "боль", вовлеченная в выбор версий binutils, библиотека C и т.д. как не, все комбинации обязательно сотрудничают или даже создают.
Один гибридный подход мог бы быть должен запуститься с предварительно созданных инструментов и заменить их позже настраиваемым решением через crosstool-ng при необходимости.
Обновление : ответ первоначально использовал инструменты CodeSourcery как пример предварительно созданного набора инструментальных средств. Инструменты CodeSourcery для ARM были бесплатными к загрузка с Mentor Graphics , но их теперь называют Sourcery CodeBench и нужно купить у Mentor Graphics. Другие опции теперь включают Linaro, а также распределение определенные инструменты от Android, Ubuntu и других.
Buildroot - инструмент, с которым мне посчастливилось создать собственный набор инструментов на основе uClibc с нуля. Он очень настраиваемый, и не слишком точен в отношении того, на каком дистрибутиве вы работаете.
Кроме того, многие из его существующих пользователей (т.е. встроенные дистрибутивы маршрутизаторов) также ориентированы на ARM.
Это то, что Eurotech использует для распространения Debian ARM. Вы заметите, что они не рекомендуют использовать кросс-компилятор, если вы можете избежать этого. Компиляция самой цели имеет тенденцию быть более надежным способом получения результатов, которые, как вы знаете, будут работать.
Я использовал scratchbox при экспериментировании с созданием приложений для Maemo (Nokia N810), который использует процессор ARM. Предположительно, scratchbox не ограничивается разработкой Maemo.
При использовании хинду получение набора инструментальных средств кросс-компиляции так же легко как
$ emerge crossdev $ crossdev -t $ARCH-$VENDOR-$OS-$LIBC
, где ARCH
arm
или armeb
, ПОСТАВЩИК unknown
или softfloat
, OS
linux
, и LIBC
gnu
или uclibc
.
, Если все Вы хотите, компилятор (и компоновщик) для ядра, LIBC
, часть не важна, и можно использовать -s1
/ --stage1
, чтобы сообщить crossdev
, что Вам только нужно binutils
и gcc
.
Я использовал crosstool на нескольких целях. Это является большим, пока Вы хотите создать свой набор инструментальных средств с нуля. Конечно, существуют несколько пред созданные наборы инструментальных средств для руки также, просто гуглят ее - слишком многие для упоминания здесь.
1), По-моему, здание Ваш собственный набор инструментальных средств работает лучшее. Вы заканчиваете тем, что имели жесткий контроль над всем, плюс то, если Вы плохо знакомы со встроенным Linux, это - БОЛЬШОЙ полезный опыт.
2) не идут с коммерческим набором инструментальных средств. Даже если Вы не хотите не торопиться для создания собственного, там существуют свободные альтернативы.
, Если Ваша компания потратит деньги, сделайте, чтобы они купили Вас jtag отладчик.
Это сэкономит Вам массу времени. и это позволяет Вам легко учиться и ступать посредством запуска ядра и т.д. Я настоятельно рекомендую использование Лаутербах jtag продукты... Они работают с тонной целей, и программное обеспечение является кросс-платформенным. Их поддержка является большой также.
, Если Вы не можете получить jtag отладчик и Вы работаете в ядре, используете VM, чтобы сделать это, непривилегированный режим Linux, VMware.. и т.д. Ваш код будет отлажен на x86.. портирование его к Вашей цели руки будет другой историей, но это - более дешевый способ сгладить некоторые ошибки.
при портировании загрузчика используйте uboot. Конечно, при использовании базовой платформы затем Вы - вероятно, более обеспеченное использование, чему они предоставляют BSP.
я надеюсь, что это помогает.
Я использую emdebian набор инструментальных средств для компиляции материала для моих машин ARM, который не счастлив быть скомпилированным исходно в маленьких доступных ресурсах (/меня, впивается взглядом в ядро). Основной пакет gcc-4.X-arm-linux-gnueabi
(X = 1,2,3) и обеспечивает соответственно снабженные суффиксом команды gcc/cpp/ld/etc. Я добавляю это к моему sources.list
:
deb http://www.emdebian.org/debian/ unstable main
, Конечно, если Вы не используете Debian, это, вероятно, не настолько полезно, но резина , это работает хорошо на меня.