GCC
1,其本質就是一個編譯器。
gcc -o output
gcc -o 輸出檔名 輸入檔名
2.其編譯過程實質可分為一下四部:
型別 | 說明 |
-E | 預處理後即停止,不進行編譯、彙編及連線 |
-S | 編譯後即停止,不進行彙編及連線 |
-c | 編譯或彙編原始檔,但不進行連線 |
-o file | 指定輸出檔案file |
(1)預處理 【gcc -E】可以理解為替換,巨集定義等。
(2)編譯 (編譯為彙編) 【gcc -S】 生成.s檔案 (處理關鍵字)
(3) 彙編 【gcc -c】 由上步.s生成.o檔案
(4) 連結 【gcc -o】
上述四部只能依次順序進行(下一步奏的執行,上一步驟必須執行)。
在預處理階段,主要處理C語言原始檔中的#ifdef、#include、以及#define等命令。在與處理過程中,GCC會忽略掉不需要預處理的輸入檔案,該階段會生成中間檔案*.i。
3.常見錯誤
(1)預處理出錯
#include “stdio.h” (“”用於當前目錄)
#include "abc.h" (<>只能用於系統目錄)
not find
gcc -I 跟查詢標頭檔案的目錄(指明標頭檔案所在)eg: gcc -I ./a -o file a.c
(2)編譯錯誤
主要為語法問題;