TL/DR: Где я могу найти дополнительную информацию о создании кросс-компиляции GCC 4.7.0 для платформы ARM (gnueabi) (предназначенной для работы на устройстве Raspberry Pi)?Кросс-компиляция для малины Pi в GCC. Когда начать?
У меня только что появилась новая малина Pi, и я очень хочу начать программирование для нее. Мне удалось установить инструментарий GCC (я использую образ системы Arch Linux) и скомпилировал некоторые базовые программы, все работает нормально.
Я также пытался скомпилировать библиотеки Boost, потому что часто использовал их в своих проектах, и все, казалось, работало нормально, следуя инструкциям (./bootstrap.sh
+ ./b2
), за исключением того факта, что компиляция была болезненно медленной. Я оставил его на несколько часов, но он едва прошел первые несколько исходных файлов. После того, как я оставил его на ночь, я обнаружил, что процесс сборки прерывается из-за нехватки ОЗУ.
Итак, я предполагаю, что Rasp Pi просто недостаточно для компиляции чего-то такого размера, как Boost. Итак, кросс-компиляция приходит мне на ум. Однако, несмотря на то, что в Интернете имеется много информации о кросс-компиляции ARM, я нахожу ее запутанной. Где можно даже начать?
У меня есть недавняя версия GCC (4.7.0), доступная на моем малине Pi, поэтому я идеально хотел бы перекрестно скомпилировать с той же версией. Где я могу получить GCC 4.7.0 toolchain для ARM? (Я буду компилировать на x86 CentOS 6.2)
Edit:
Я высвобождены ненужную память GPU и создать раздел подкачки 4 Гб на диске USB, в то время как файлы сборки на долю NFS. Boost теперь компилируется намного быстрее, поэтому он управляемый. Я все еще хотел бы знать, как я могу создать инструментальную цепочку GCC 4.7 для кросс-компиляции на моем компьютере x86, хотя, поскольку я намереваюсь много компилировать, и я бы хотел, чтобы это было как можно быстрее.
Edit 2:
Поскольку GCC 4.7.0 является относительно новым, как представляется, не быть предварительно встроенным кросс-компилятор (i386-> ARM). Вероятно, мне придется построить один сам, что кажется нетривиальной задачей (я пробовал и проваливал). Кто-нибудь знает, какой учебник следует для создания кросс-компилятора GCC, надеюсь, для одной из последних версий?
Я пробовал с this great shell script (который отлично поработал для создания компилятора с одинаковой архитектурой), и я успешно построил 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
Edit 3:
мне удалось построить 4,7 GCC набора инструментов для ARM (яй!), Используя this shell script как предложено пользователем dwelch в Комментарии. Я также построил newlib
и libstdc++
с помощью this article в качестве руководства. Инструментарий отлично работает, но я запустил исполняемый файл на моей малине Pi, он не с Illegal instruction
. Что может быть причиной этого?
Попробуйте пакет zram, если он еще не установлен. Это создаст сжатый RAM-обмен, который поможет вам больше, чем вы думаете. (Как ни странно.) Также добавьте прилично быстрое USB-устройство, либо жесткий диск USD, либо USB-накопитель высокого качества, и поменяйте его на swap. –
Также в этой теме вы можете прочитать, как отключить графическую память, чтобы получить 32 мегабайта оперативной памяти: http://www.raspberrypi.org/phpBB3/viewtopic.php?f=5&t=4831&p=65410 –
Вау, спасибо , На самом деле у меня было 128 МБ для GPU. Неудивительно, что все было так медленно. – Tibor