我已經在Stack Overflow上問了這個問題,但是我想知道是否有人設法為ARM交叉編譯(對於x86 / x86-64 Linux主機)構建了GCC 4.7工具鏈。 。有很多關於從源代碼構建GCC的說明,也有很多針對4.7之前的GCC版本的交叉編譯器,而不僅僅是最新的版本。出於實用目的。
我渴望進行編譯,並且希望使用最新,最好的工具。
我已經在Stack Overflow上問了這個問題,但是我想知道是否有人設法為ARM交叉編譯(對於x86 / x86-64 Linux主機)構建了GCC 4.7工具鏈。 。有很多關於從源代碼構建GCC的說明,也有很多針對4.7之前的GCC版本的交叉編譯器,而不僅僅是最新的版本。出於實用目的。
我渴望進行編譯,並且希望使用最新,最好的工具。
我發現了這些說明如何為Raspberry Pi構建交叉編譯器。這是使用 crosstool-ng
工具的一個很好的介紹,該工具簡化了配置交叉編譯器構建A LOT(它具有基於curses的界面)並且支持GCC 4.7。
我已經按照這些步驟操作,最終成功構建了4.7交叉編譯器。
先決條件:需要以下軟件包:野牛, flex , gperf , gawk , libtool ,自動製作 , g ++ ,請確保已安裝這些文件,然後再繼續。
crosstool-ng
a>(我使用的是1.15.2版)。 ./ configure
/ make
/ install
ct-ng menuconfig
。您將看到一組不錯的菜單來配置構建。選擇合適的前綴目錄。這是將在其中安裝編譯器和庫的目錄(基本上可以,只要確保該目錄為空即可。)。
轉到目標選項菜單。
您可能還希望將浮點參數設置為 softfp (請參閱本獲取更多信息),但是 hardfp 更適合Raspbian。
轉到 C-library 菜單並選擇一種。默認值為 eglibc ,但該版本對我來說還不夠完善,因此我使用了 glibc (最新版本)。
crosstool-ng
的一部分缺乏發展。請參見使用eglibc很久。默認使用 glibc 。 ct-ng build
在同一目錄中。等待一會兒(在我的情況下大約是45分鐘),您的交叉編譯器應該已經準備好。我很想編譯,我想使用最新和最好的工具。
事實上,不需要構建最新和最好的工具一個人在 Raspberry Pi工具GitHub存儲庫上,您可以找到用於交叉編譯軟件的 X86_64
和 x686
工具鏈。
I建議使用 x86-linux64-cross-arm-linux-hardfp
工具鏈,因為它將針對Hard Floating Point進行編譯,這將導致系統更快。
$ arm-bcm2708hardfp-linux-gnueabi-gcc --versionarm-bcm2708-linux-gnueabi-gcc-4.5.1(Broadcom-2708)4.5.1版權所有(C)2010 Free Software Foundation,Inc。
注意::如果使用的是現有內核,則必須使用與內核匹配的工具鏈。 HardFP應用程序無法在SoftFP內核上運行。
要使用工具鏈,只需簽出存儲庫即可:
git clone https://github.com/ raspberrypi / tools.git --depth 1
-depth
參數將意味著您不必等待存儲庫歷史記錄下載為好(因為我們不會使用它)。
然後將二進製文件添加到您的PATH變量中:
export PATH =〜/ tools / arm-bcm2708 / x86-linux64 -cross-arm-linux-hardfp / bin:$ PATH
或保留PATH:
echo“ export PATH =〜/ tools / arm -bcm2708 / x86-linux64-cross-arm-linux-hardfp / bin:$ PATH“ >>〜/ .bashrcsource〜/ .bashrc
要使用工具鏈進行編譯,現在可以添加 CROSS_COMPILE
參數。例如,運行 make
:
make CROSS_COMPILE = arm-bcm2708hardfp-linux-gnueabi-
更加容易,您可以將變量再次保存到 bashrc
:
echo“ export TARGET = arm-bcm2708hardfp-linux-gnueabi” >>〜/ .bashrcsource〜/ .. bashrc
,現在在編譯時使用變量:
make CROSS_COMPILE = $ {TARGET}
請注意,在64位系統上使用centos 6.3上的ct-ng構建工具鏈時,由於平台(顯然)不支持靜態鏈接,我被迫取消選擇靜態鏈接libstdc ++的選項。
而且,雖然最好使用git存儲庫中的預構建工具鏈,但是該鏈似乎在Centos 6.3上不起作用-可能是因為它是為更現代的系統或其他東西而構建的。我並沒有真正嘗試過減少失敗。
如果您希望從快速主機中受益,為RPI編譯內容,我建議通過chroot和QEMU在跨環境中工作。
即可設置Debian跨環境(請參閱QEMU / debootstrap一章)方法),您就完成了。
如果您安裝了Ubuntu 64位版本以及Raspberry Pi SVN的工具,則會出現錯誤:
-bash:/ home / I / toolchain / tools / arm-bcm2708 / gcc-linaro-arm-linux-gnueabihf-raspbian / bin / arm-linux-gnueabihf-c ++:沒有這樣的文件或目錄
只需運行:
sudo apt-get install ia32-libs
Carlson-Minot Inc.提供了針對裸機和GNU / Linux ARM目標的預構建工具鏈。該工具鏈基於Mentor Graphics Sourcery Lite工具鏈,包含在OS X上構建的修復程序和採用方法。請參見