TL/DR:我在哪裏可以找到關於爲ARM(gnueabi)平臺(打算在Raspberry Pi設備上運行)構建GCC 4.7.0交叉編譯工具鏈的更多信息?GCC中樹莓派的交叉編譯。從哪兒開始?
我剛買了一個全新的樹莓派,我非常渴望爲它開始編程。我設法安裝了GCC工具鏈(我正在使用Arch Linux系統映像)並編譯了一些基本程序,所有工作都很好。
我也試過編譯Boost庫,因爲我經常在我的項目中使用它們,並且按照說明(./bootstrap.sh
+ ./b2
)似乎一切正常,除了編譯速度很慢。我將它擱置了幾個小時,但幾乎沒有超過前幾個源文件。在我離開它運行了一晚之後,我發現由於RAM短缺而中止了構建過程。
所以,我的猜測是,Rasp Pi只是編譯一些像Boost這樣大小的東西。所以,我認爲是交叉編譯。但是,儘管在線提供了大量有關ARM交叉編譯的信息,但我覺得它很讓人困惑。哪裏開始?
我在Raspberry Pi上有一個最新的GCC版本(4.7.0),所以我希望能夠使用相同的版本進行交叉編譯。我在哪裏可以獲得ARM的GCC 4.7.0工具鏈? (我將在x86的CentOS 6.2被編譯)
編輯:
我不需要釋放GPU內存,並設置了一個USB驅動器上的一個4GB的交換分區,同時建立文件上NFS共享。 Boost現在編譯的速度要快得多,因此它是可管理的。我仍然想知道如何在x86 PC上建立一個GCC 4.7工具鏈來進行交叉編譯,因爲我打算做大量的編譯工作,並希望它儘可能快。
編輯2:
由於GCC 4.7.0是相對較新的,似乎沒有成爲一個預先建立的交叉編譯器(i386-> ARM)。我可能必須自己創建一個,這似乎是一項不重要的任務(我已經嘗試並失敗了)。有沒有人知道一個教程要建立一個GCC交叉編譯器,希望爲最近的版本之一?
我試着this great shell script(這對於建立一個相同的拱編譯偉大的工作),我已經成功地建立binutils
和GCC的先決條件,但隨後GCC編譯保持着許多神祕的錯誤失敗。我真的迷失在這裏,所以我會非常感謝你的幫助。上樹莓裨
GCC用
--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配置:
我設法建立使用this shell script爲ARM 4.7 GCC工具鏈(耶!)通過在用戶dwelch所建議註釋。我還使用this article作爲指導,建立了newlib
和libstdc++
。工具鏈可以正常工作,但是如果我在Raspberry Pi上運行可執行文件,它會以Illegal instruction
失敗。這可能是什麼原因?
嘗試zram包,如果它尚未安裝。這將創建一個壓縮的RAM交換,這比你想象的更有幫助。 (太奇怪了。)還要添加一個非常快速的USB設備,無論是美元硬盤還是高質量的USB棒,並把交換。 –
此外,在這個線程,你可以閱讀如何禁用圖形內存,所以你獲得32兆內存:http://www.raspberrypi.org/phpBB3/viewtopic.php?f=5&t=4831&p=65410 –
哇,謝謝。我實際上已經爲GPU分配了128MB。難怪一切都如此緩慢。 – Tibor