пятница, 11 января 2008 г.

arm toolchain

Не так то просто собрать свой тулчейн.

Поскольку стандартная прошивка LPC писалась под старый uclinux, то мне просто необходимо было иметь binutils с elf2flt, потому что там основной формат flat. К тому же мне абсолютно не нужен был glibc.

Долго я с этим возился, и как вижу - я не одинок в этом...
чего мне пока с последними версиями gcc проделать на удалось - под ARM собираться не хочет, binutils собираются, bootstrap compiler тоже, а сборка libc - сваливается... или это сборка полноценного компилера? не помню уже... после десятка безуспешных попыток я это дело отложил на неопределенное время.

Начнем с того, что стандартные средства gentoo (crossdev) хоть и предполагают, но не могут собрать toolchain с uClibc. А поддержка elf2flt видимо когда-то и была, но ныне включается только ковырянием в ебилдах.

Стандартные средства uClinux имеют волосатую дату 14 марта 2003 и включают в себя старый binutils который не в состоянии собрать нынешнее ядро. С неофициальным тулчейном ситуация не намного лучше, ибо он базируется на gcc-3.4.0, в то время как <gcc-3.4.1 имел баг с компиляцией на arm, что также дает полную неюзабельность данных пакетов. А еще я убил бы того, кто придумал закатывать архивы в .sh! Моя система имеет локаль по умолчанию - UTF8. Похоже, что именно это не дает скрипту нормально отрабатывать ибо UTF8 пребразование превращает архив непонятно во что. Пришлось выцеплять архив из .sh файла при помощи dd, после чего их стало возможным раскрутить, но всеравно бестолку.

Есть предположение, что разработчики uClinux забросили эти инструменты в пользу buildroot, который, в отличи от OpenEmbedded, заточен на uClinux. И если повезет, то можно найти снапшот (стабильного релиза так и не нашел), который, после небольшой доработки напильником сможет собрать корректный тулчейн. Так я и поступил, ибо то, что пытаюсь собрать я сам, упорно не хочет работать ругаясь то на отсутствие либ, то на некорректность бинарей.

Вообще я наверное что-то не понимаю, но мне кажется что с кросскомпиляцией GNU'шники что-то намудрили.

PS: А еще почему-то когда я делаю выравнивание вправо у меня сразу меняется межстрочный интервал. глюка какая-то.