出處:http://www.zdnet.com.cn/developer/code/story/0,3800066897,39142725,00.htm
2003-06-27 12:14 pm
gnu編譯器(gcc)是乙個「免費」的c/c++工具鏈,有力的支撐了linux系統的發展。由於它可被看作許多嵌入式處理器的乙個交叉編譯器,所以在嵌入式軟體開發中是乙個流行的工具。
支援的體系結構包括:
我最近使用windows/ms-dos主機上的gcc工具鏈並使用djgpp完成了乙個面向strongarm 處理器的專案。我發現這個工具鏈非常可靠,而且能夠產生快速高效的機器碼。
gcc工具鏈中大多數有用的工具主要集中於以下幾個源**包中:
gcc 包
binutils (binary utilities) 包
make
debugger
當使用交叉編譯器的時候,程式通常用字首來指示目標的體系結構和聯結器的輸出隔世。例如, arm-elf-as是gcc 工具鏈中的匯程式設計序編譯器,針對arm 處理器並產生elf 格式的二進位制**。這種命名約定避免了對眾多以」gcc」命名的針對不同體系結構的編譯器的使用混淆。
選擇乙個主機系統
為了生成乙個gcc交叉編譯器,首先需要你在機器上安裝乙個原始的gcc便一起。這是因為gcc源**只能被它自身編譯,而不能使用microsoft vc++或其他編譯器。下面是一些可選的主機系統和相關工具。
linux
linux是可以用來建立乙個交叉編譯器的最早的主機系統。它已經包括了乙個原始gcc 編譯器,以及開發大多數gcc 源**的環境。如果你通常使用windows 作為你的開發系統,這是乙個不太實際的選擇。
windows/cygwin
cygwin 是windows 上的unix 方針環境。可以把它看作是"unix 視窗" 代替了"dos 視窗" 。擇個環境可以讓你在windows 上使用gcc 原始編譯器和其他通用的unix 程式,因而能夠建立乙個gcc 交叉編譯器。你也必須在cygwin 的環境中執行所生成的交叉編譯器。這是在windows 上建立gcc 交叉編譯器的最簡單的方法,缺點是cygwin 相對較大執行較慢。
windows/ms-dos
你還可以使用djgpp建立乙個gcc 交叉編譯器。 djgpp是免費的gnu程式在ms-dos 32為保護模式的移植版本,包括了gcc。主要是因為在unix和ms-dos 之間的源**命名約定不同,使得這種方法有點複雜。優點是他所生成的交叉編譯器可以象正常的windows dos 程式一樣執行,而不需要執行cygwin 。
支援庫做完這些,你可能需要乙個針對目標處理器的標準的c 執行庫。在使用gcc是通常使用這兩個庫:glibc和 newlib. glibc 是針對pc應用設計的,對大多數嵌入式應用來說都顯得過於笨重。另一方面,newlib 是面向嵌入式系統的, 明顯的簡潔高效。這些庫都是開放源**的,可以使用gcc 交叉編譯器來重新編譯。
授權問題
gcc 和 newlib 庫對嵌入式系統開發者的授權發布比較寬鬆。總體上講,如果你使用了這些工具和庫,你不需要公開你的源**和智財權,這是乙個常見的誤解。
商用的 gcc 發布
GNU編譯工具鏈
階段輸入 輸出gcc示例 預編譯 c igcc e test.c o test.i 編譯 i sgcc s test.i o test.s 彙編 s ogcc c test.s o test.o 鏈結 o gcc test.o o test.o gcc的格式 gcc test.c o test gc...
啥是工具鏈和GNU工具鏈
在軟體工程中,工具鏈 英語 toolchain 是一系列用於製作軟體的工具。這些工具一般乙個接乙個地運用,一件工具的輸出輸入至下一件工具,但廣義上可以單單是指多個相關的工具。工具鏈一般包括用來編輯源 的文字編輯器 生成可執行檔案的編譯器及鏈結器 連線作業系統的庫 以及偵錯程式。例子有gnu tool...
linux 學習筆記 GNU工具鏈簡介
我們通常無法直接通過linux核心,而需要借助linux核心之上的gun工具鏈來進行 檔案處理 文字操作 程序管理 等操作。gnu linux shell為使用者提供了 啟動程式 管理檔案系統上的檔案 管理執行在linux系統上的程序 的途徑shell允許你輸入文字命令,之後將解釋命令並在核心中執行...