====== Собираем кросс-компилятор ARM ====== Первое, с чем мы сталкиваемся при работе с микроконтроллерами, это с выбором компилятора с языка ''C''. Имея дело с современными контроллерами, имеет смысл начинать именно с ''C'' а не с ассеблера, потому что система команд заточена под компиляцию с языков высокого уровня, и для новичка может быть сложна и не раскрыть всех своих возможностей. Зачастую, компилятор может создать более оптимальный код, чем начинающий программист. Тем не менее изучение ассемблера необходимо в дальнейшем, что бы контроллер смог проявить себя во всей красе. Поскольку мы имеем дело со свободным ПО, то выбор у нас не велик. Берём [[http://gcc.gnu.org/|GCC]] не особо задумываясь. На самом деле ''GCC'' это целый комплекс кросскомпиляторов с языков ''C'', ''C++'', ''Objective-C'', ''Ada'', ''Fortran'' и ''Java''. Нас же интересуют только первые два. Последний не интересует вообще, остальные могут пригодится. Существуют [[:soft:arm-toolchain|готовые сборки]] необходимого софта, но всегда полезно знать что откуда берётся, поэтому мы рассмотрим компиляцию компилятора((извиняюсь за каламбур, но GCC компилится тоже с помощью GCC)) под UNIX-like системами. ===== План сборки ===== Сборка основного пакета происходит в четыре этапа. - Собираем ''binutils'' для целевой платформы arm-elf - Собираем "голый" ''GCC'' для целевой платформы arm-elf - Собираем свежеполученным ''arm-elf-gcc'' библиотеки newlib - Пересобираем ''GCC'' с использованием newlib После этого дополнительно собираем отладчик ''GDB'' и графический интерфейс к нему ''Insight''. Не забудьте после сборки прописать пусть в переменную ''PATH'': export PATH=/usr/local/arm/arm-elf/bin:$PATH ===== Сборка ===== Скачайте шаблон для сборки тулчейна {{:tutorial:toolchain-skel.tar.gz|toolchain-skel.tar.gz}} Распакуйте в удобное место. В подкаталог ''src'' поместите архивы с исходными кодами: * [[ftp://ftp.gnu.org/gnu/binutils/|Binutils]] последней версии ([[ftp://ftp.gnu.org/gnu/binutils/binutils-2.18.tar.bz2|binutils-2.18]]) * Компилятор [[ftp://ftp.gnu.org/gnu/gcc|GCC]] версии в которой отлажена поддерка ARM ([[ftp://ftp.gnu.org/gnu/gcc/gcc-4.2.4/gcc-4.2.4.tar.bz2|gcc-4.2.4]]) * Библиотеку [[http://sources.redhat.com/newlib/|Newlib]] последней версии ([[ftp://sources.redhat.com/pub/newlib/newlib-1.16.0.tar.gz|newlib-1.16.0]]) * Отладчик [[ftp://ftp.gnu.org/gnu/gdb|GDB]] последней версии ([[ftp://ftp.gnu.org/gnu/gdb/gdb-6.8.tar.bz2|gdb-6.8]]) //необязательно// * GUI интерфейс отлачика [[http://sources.redhat.com/insight/|Insight]] последней версии ([[ftp://sourceware.org/pub/insight/releases/insight-6.8.tar.bz2]])) //необязательно// Откройте в текстовом редакторе ''Makefile'' из главного каталога и скорректируйте переменную ''PREFIX'' указав где Вы хотите разместить собраный тулчейн. Находясь в главном каталоге выполните команду ''make''. Дождитесь успешного завершения. :!: Сборка может занять длительное время. Если Вам необходим отладчик дополнительно выполните команду ''make gdb insight''. Для использования команд собранного тулчейна добавьте путь к ним в переменную окружения PATH: export PATH=$PATH:/bin ===== См. также ===== {{rss>http://feeds.delicious.com/v2/rss/iaar/arm+toolchain?count=15}} {{tag>arm gcc toolchain howto}}