Кросс-компиляция для Raspberry Pi в GCC. Когда начать?

TL/DR: Где я могу найти дополнительную информацию о создании цепочки инструментов кросс-компиляции GCC 4.7.0 для платформы ARM (gnueabi) (предназначенной для работы на Raspberry Пи-устройство)?

У меня только что появился новый Raspberry Pi, и я очень хочу начать программировать для него. Мне удалось установить набор инструментов GCC (я использую образ системы Arch Linux) и скомпилировать несколько основных программ, все работает нормально.

Я также пытался скомпилировать библиотеки Boost, потому что я часто использую их в своих проектах, и все работало нормально, следуя инструкциям ( ./bootstrap.sh+ ./b2 ), за исключением того факта, что компиляция была мучительно медленной. Я оставил его включенным на несколько часов, но первые несколько исходных файлов едва прошли. После того, как я оставил его работать на ночь, я обнаружил, что процесс сборки прерван из-за нехватки оперативной памяти.

Итак, я предполагаю, что Rasp Pi просто недостаточно мощен для компиляции чего-то такого размера, как Boost. Итак, кросс-компиляция приходит мне на ум. Однако, несмотря на то, что в Интернете доступно много информации о кросс-компиляции ARM, я нахожу ее запутанной. С чего вообще начать?

У меня есть последняя версия GCC (4.7.0), доступная на моем Raspberry Pi, поэтому в идеале я хотел бы выполнить кросс-компиляцию с той же версией. Где я могу получить GCC 4.7.0 набор инструментов для ARM? (Я буду компилировать на x86 CentOS 6.2)

Изменить:

Я освободил ненужную память графического процессора и создал раздел подкачки размером 4 ГБ на USB-накопителе, в то время как файлы сборки находятся в общей папке NFS. Boost теперь компилируется намного быстрее, так что им можно управлять. Я все же хотел бы знать, как настроить набор инструментов GCC 4.7 для кросс-компиляции на моем ПК с архитектурой x86, поскольку я намерен много компилировать и хотел бы, чтобы это было как можно быстрее.

Редактировать 2:

Поскольку GCC 4.7.0 является относительно новым, похоже, не существует предварительно созданного кросс-компилятора (i386->ARM). Вероятно, мне придется построить его самому, что кажется нетривиальной задачей (я пытался и потерпел неудачу). Кто-нибудь знает учебник по созданию кросс-компилятора GCC, надеюсь, для одной из последних версий?

Я пытался использовать этот великолепный сценарий оболочки(который прекрасно работал для создания компилятора с той же архитектурой), и я успешно собрал binutilsи предварительные условия GCC, но затем GCC сборка продолжала давать сбои со многими загадочными ошибками. Я действительно потерялся здесь, поэтому я был бы очень признателен за вашу помощь.

GCC на Raspberry Pi был сконфигурирован с

--prefix=/usr --libdir=/usr/lib --libexecdir=/usr/lib 
--mandir=/usr/share/man --infodir=/usr/share/info 
--with-bugurl=https://bugs.archlinux.org/ 
--enable-languages=c,c++,fortran,lto,objc,obj-c++ --enable-shared 
--enable-threads=posix --with-system-zlib --enable-__cxa_atexit 
--disable-libunwind-exceptions --enable-clocale=gnu 
--disable-libstdcxx-pch --enable-libstdcxx-time 
--enable-gnu-unique-object --enable-linker-build-id --with-ppl 
--enable-cloog-backend=isl --enable-lto --enable-gold 
--enable-ld=default --enable-plugin --with-plugin-ld=ld.gold 
--with-linker-hash-style=gnu --disable-multilib --disable-libssp 
--disable-build-with-cxx --disable-build-poststage1-with-cxx 
--enable-checking=release --host=arm-unknown-linux-gnueabi 
--build=arm-unknown-linux-gnueabi 

Правка 3:

Мне удалось собрать набор инструментов GCC версии 4.7 для ARM (ура!), используя этот сценарий оболочки, как было предложено пользователем dwelch в Комментарии. Я также собрал newlibи libstdc++, используя эту статьюв качестве руководства. Цепочка инструментов работает нормально, но когда я запускаю исполняемый файл на своем Raspberry Pi, происходит сбой с Недопустимой инструкцией.Что может быть причиной этого?

52
задан 13 June 2012 в 03:08
поделиться