1。背景
arm機器一般因為資源問題進行編譯會影響開發速度,而且很多時候因為資源不夠而無法完成編譯工作。因此,需要在執行機上進行交叉編譯,即使用x86或其他架構機器基於交叉編譯工具編譯出在arm上可以運行的程序。
2. 分類和說明
從授權上,分為免費授權版和付費授權版。
免費版目前有三大主流工具商提供,第一是GNU(提供源碼,自行編譯制作),第二是 Codesourcery,第三是Linora。
收費版有ARM原廠提供的armcc、IAR提供的編譯器等。
免費版如下幾種:
arm-none-linux-gnueabi-gcc:是 Codesourcery 公司(目前已經被Mentor收購)基於GCC推出的的ARM交叉編譯工具。可用於交叉編譯ARM(32位)系統中所有環節的代碼,包括裸機程序、u-boot、Linux kernel、filesystem和App應用程序。
arm-linux-gnueabihf-gcc:是由 Linaro 公司基於GCC推出的的ARM交叉編譯工具。可用於交叉編譯ARM(32位)系統中所有環節的代碼,包括裸機程序、u-boot、Linux kernel、filesystem和App應用程序。
aarch64-linux-gnu-gcc:是由 Linaro 公司基於GCC推出的的ARM交叉編譯工具。可用於交叉編譯ARMv8 64位目標中的裸機程序、u-boot、Linux kernel、filesystem和App應用程序。
arm-none-elf-gcc:是 Codesourcery 公司(目前已經被Mentor收購)基於GCC推出的的ARM交叉編譯工具。可用於交叉編譯ARM MCU(32位)芯片,如ARM7、ARM9、Cortex-M/R芯片程序。
arm-none-eabi-gcc:是 GNU 推出的的ARM交叉編譯工具。可用於交叉編譯ARM MCU(32位)芯片,如ARM7、ARM9、Cortex-M/R芯片程序。
命名規則: https://www.veryarm.com/296.html
交叉編譯工具鏈的命名規則為:arch [-vendor] [-os] [-(gnu)eabi]
arch - 體系架構,如ARM,MIPS
vendor - 工具鏈提供商
os - 目標操作系統
eabi - 嵌入式應用二進制接口(Embedded Application Binary Interface)
找到一個下載地址(http://www.mentor.com/embedded-software/sourcery-tools/sourcery-codebench/editions/lite-edition/),不會用。開始學怎么編。
3. 自己編譯交叉編譯器
3.1 先准備本地環境,安裝必要的工具
sudo apt-get install bison flex texinfo automake libtool cvs patch curl subversion gawk cvsd gperf
其中:
bison和flex是用來生成語法和詞法分析器;
texinfo和man類似,用來讀取幫助文檔;
automake是幫助生成Makefile的工具;
libtool幫助在編譯過程中處理庫的依賴關系,自動搜索路徑;
cvs、cvsd和subversion是版本控制軟件,用於編譯過程中的源碼下載;
curl通過給定的網絡地址下載源碼的工具;
patch是用於給源碼打補丁的工具;
gawk是linux下用於文本處理和模式匹配的工具。
3.2 獲取crosstool-NG的源碼
網站: http://crosstool-ng.github.io/
下載最新的版本:git clone https://github.com/crosstool-ng/crosstool-ng