1、 ToolChain 簡介
ToolChain包含許多組件:主要之一是GCC,它可以是原生編譯工具或交叉編譯工具,GCC由Binuitls工具支援,Binutils是二進位代碼維護工具,這些組件是編譯器的必要工具,同時他們也需要C庫(glibc)支援。認真考慮一下:定製一套編譯工具並不是想像中的易事!如果你還想繼續看下去,必須具備如下技能:
熟悉Linux環境
熟悉Linux的必要命令和工具的使用
知道如何配置、編譯核心和應用程式
以下章節將介紹怎樣定製ARM交叉編譯工具集,但對於大多數ARM開發人員來說,沒有必要親自做這件事,完全可以用現成的工具集。除非現成的工具集不滿足你的使用要求,或者你想提高開發應用的能力。總之,我們強烈建議你使用現成穩定的工具集來做應用開發!
2、 定製ToolChain
首先來看看工作的大至步驟:
決定目標的名稱
決定目標的存放位置
編譯、安裝Binutils
編譯、安裝GCC
編譯、安裝GLIBC
讓交叉編譯工具支援更多編譯語言
測試定製的交叉編譯工具
2.1、決定目標的名稱
原生編譯工具集編譯的代碼只適用本機(大多數PC是X86)運行,對於ARM開發人員來說,需要一個能在原生編譯、但編譯卻產生ARM運行代碼的一套交叉編譯工具集。
因此,選擇一個與本機工具集相異的特定含義的目標名稱是非常有必要的。
arm-linux:是個比較受歡迎的名稱,支援ELF格式(ARMLinux標準)。除Acorn使用者使用老的a.out格式外。
arm-linuxaout:選擇a.out格式,ARMLinux基本不支援它了。
arm-aout、arm-coff、arm-elf、arm-thumb:其它的格式名。
你也可以在其中插入版本資訊,比如:
armv2:ARMV2核,支援26bit模式。
armv3l、armv3b:ARMV3核,小位元組(l)或大位元組(b)模式。
armv4l、armv4b:ARMV4核,如:StrongARM、ARM7TDMI、ARM8、ARM9。同樣也支援小位元組(l)或大位元組(b)模式。
armv5l、armv5b:ARMV5核,如:XScale核ARM10。同樣也支援小位元組(l)或大位元組(b)模式。
選擇什麼名稱對定製ARM交叉編譯工具集沒太大的影響,但用大家常用的名稱會比較好些。