TL/DR: Gdzie mogę znaleźć więcej informacji na temat budowania GCC 4.7.0 krzyżowego kompilacji toolchain dla ARM (gnueabi) platformy (przeznaczony do uruchomienia na urządzeniu Raspberry Pi)?Kompilacja krzyżowa dla Raspberry Pi w GCC. Gdzie zacząć?
Właśnie dostałem zupełnie nowy Raspberry Pi i jestem bardzo chętny do rozpoczęcia programowania dla niego. Udało mi się zainstalować toolchain GCC (używam obrazu systemu Arch Linux) i skompilowałem kilka podstawowych programów, wszystkie działają poprawnie.
Próbowałem również skompilować biblioteki Boost, bo często z nich korzystać w moich projektów i wszystko wydawało się działać prawidłowo, postępując zgodnie z instrukcjami (./bootstrap.sh
+ ./b2
) z wyjątkiem faktu, że kompilacja boleśnie powolne. Zostawiłem to na kilka godzin, ale ledwo minęło kilka pierwszych plików źródłowych. Po tym, jak zostawiłem to działające na noc, odkryłem, że proces kompilacji został przerwany z powodu braku pamięci RAM.
Zgaduję więc, że Rasp Pi jest po prostu niedostatecznie wydajny do kompilowania czegoś o takim rozmiarze jak Boost. Więc myślę o krzyżowej kompilacji. Jednak mimo że istnieje wiele informacji na temat kompilacji krzyżowej ARM dostępnych online, uważam to za mylące. Gdzie się nawet zaczyna?
Mam najnowszą wersję GCC (4.7.0) dostępne na moim Raspberry Pi, więc chciałbym idealnie cross-kompilacji z tej samej wersji. Skąd mogę pobrać zestaw narzędzi GCC 4.7.0 dla ARM? (Będę na kompilacji x86 CentOS 6.2)
Edit:
I dealokowane niepotrzebne pamięci GPU i skonfigurować 4GB wymiany partycję na dysku USB, podczas gdy budują pliki są w udziale NFS. Funkcja Boost kompiluje się teraz znacznie szybciej, więc można nią zarządzać. Nadal chciałbym wiedzieć, jak mogę skonfigurować zestaw narzędzi GCC 4.7 do kompilacji krzyżowej na moim komputerze x86, ponieważ zamierzam dużo kompilować i chciałbym, aby był tak szybki, jak to tylko możliwe.
Edit 2:
Od GCC 4.7.0 jest stosunkowo nowy, nie wydaje się być gotowych cross-kompilator (i386-> ARM). Prawdopodobnie będę musiał sam je zbudować, co wydaje się nietrywialnym zadaniem (próbowałem i zawiodłem). Czy ktoś wie o tutorialu do naśladowania dla budowania cross-kompilatora GCC, mam nadzieję, że dla jednej z najnowszych wersji?
Próbowałem z this great shell script (który działał świetnie do budowy kompilator sam-arch), a ja z powodzeniem zbudowany binutils
i GCC warunki, ale wtedy budować GCC przechowywane niepowodzeniem z wielu tajemniczych błędów. Naprawdę jestem tutaj zagubiony, więc bardzo bym wdzięczny za twoją pomoc.
GCC na Raspberry Pi został skonfigurowany z
--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:
udało mi się zbudować toolchain 4,7 GCC dla ARM (yay!) Używając this shell script jak sugeruje dwelch użytkownika w komentarze. Zbudowałem też jako przewodnik newlib
i libstdc++
przy użyciu this article. Toolchain działa dobrze, ale kiedy uruchamiam plik wykonywalny na moim Raspberry Pi, to kończy się niepowodzeniem z Illegal instruction
. Co może być tego przyczyną?
Wypróbuj pakiet zram, jeśli nie jest jeszcze zainstalowany. Spowoduje to utworzenie skompresowanej wymiany RAM, która pomoże ci więcej niż myślisz. (Dziwnie.) Dodaj też przyzwoicie szybkie urządzenie USB, albo dysk twardy USD, albo wysokiej jakości pamięć USB i włóż w to zamień. –
Ponadto w tym wątku można przeczytać, jak wyłączyć pamięć graficzną, aby uzyskać 32 MB pamięci RAM: http://www.raspberrypi.org/phpBB3/viewtopic.php?f=5&t=4831&p=65410 –
Wow, dziękuję . Faktycznie miałem 128 MB przydzielone na GPU. Nic dziwnego, że wszystko było tak powolne. – Tibor