一、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要包含的文件的所在目錄)。