GCC是“GNU Compiler Collection”的縮寫,從字面意思可以知道它是一個編譯器集。gcc不止可以編譯器c語言,還能用于c++,java,object-C等語言程序。但是在這里,我們的嵌入式學習中,目前只去關注gcc在C語言方面的編譯功能。在Windows下比較流行的GCC移植版主要有三個。他們是MinGWCygwin#8203;和Djgpp。雖然,Djgpp是應用于DOS系統的,考慮到windows對DOS的兼容,所以也將Djgpp納入其中了。
GCC編譯器介紹:
GCC是用于Unix,Unix-like系統的編譯器。不過,現在Windows下也出現了GCC的穩定移植版。這要感謝Internet上眾多程序員的共同努力。
如今,在Windows下比較流行的GCC移植版主要有三個。他們是 MinGW,Cygwin和Djgpp。雖然,Djgpp是應用于DOS系統的,考慮到windows對DOS的兼容,所以也將Djgpp納入其中了。
總體來說,MinGW,Cygwin和Djgpp各有特色,針對不同的應用場合,可以選擇不同的移植版來滿足需要。MinGW這個系列的移植,主要方向是讓GCC的Windows移植版能使用Win32API來編程。而Cygwin的目標是能讓Unix-like下的程序代碼在Windows下直接被編譯。至于Djgpp,則是想讓DOS下也能用上GCC。
所以,對于開發人員不同的需求。選擇合適的移植版會讓工作變得輕松而高效。 。
gcc編譯器使用方法
一、gcc編譯流程
GCC編譯器在編譯一份C代碼的時候,需要經過以下4個步驟:
預處理(preprocessing):對 .c 源文件進行預處理,生成 .i 文件。
編譯(compilation):對 .i 文件進行編譯,生成 .s 匯編文件。
匯編(assembly):對 .s 文件進行匯編,生成 .o 目標文件。
鏈接(linking):對 .o 文件進行鏈接,生成可執行文件。
二、gcc命令使用
2.1 gcc命令格式定義
2.2 gcc命令常用參數
2.2.1 基本參數
-E:僅對源文件進行預處理,不進行編譯。結果直接輸出到顯示屏。
-S:對源文件進行預處理、編譯,不進行匯編。結果以 .s 文件形式保存,與 .c 源文件同名。
-c:對源文件進行預處理、編譯、匯編,不進行鏈接。結果以 .o 文件形式保存,與 .c 源文件同名。
-save-temps:保存編譯過程中所產生的所有中間文件。中間文件名與 .c 源文件同名,后綴為 .i 、.s、.o
2.2.2 調試參數
-o:將任何類型的輸出都存放至指定的文件中。
-Wall:打開編譯器的警告標志,盡可能多的輸出警告信息。強烈建議,編譯時始終帶上 -Wall 選項。
-Werror:將所有的警告當成錯誤處理,必須消除警告才能繼續編譯。
2.2.3 函數庫參數
-llibrary:手動指定函數庫library參與鏈接。庫名為library,文件名為liblibrary.a或liblibrary.so
-Ldir:手動添加一個路徑dir,用以搜索庫文件(.a 或 .so 文件,即手動指定的函數庫文件的所在目錄)。
-Idir:手動添加一個路徑dir,用以搜索頭文件(.h 文件,即源碼內#include要包含的文件的所在目錄)。