在普通的應用開發中,從源代碼到可執行文件,有四個步驟,即預編譯、編譯、匯編和鏈接。
1.預編譯
預編譯過程主要處理以“#”開頭的指令,在源代碼文件中編譯。如常見的" #include "和" #define ",主要處理規則如下:
1)刪除所有“#define”,展開所有宏定義。
2)處理所有條件預編譯指令,如“#if”和“#ifdef”。
3)處理“#include”預編譯指令並將包含文件插入預編譯指令位置。
4)刪除所有註釋,包括“//”和“/* */”。
5)增加行號和文件名標識,以便在編譯過程中出現編譯錯誤和警告時能及時顯示行號。
6)保留所有#pragma編譯器指令,因為編譯器必須使用它們。
預編譯等效於以下命令:
$ gcc-ehohello.c-ohhello.i或$cpp hello.c > hello.i
編譯
編譯過程是對預處理文件進行壹系列的詞法分析、語法分析、語義分析和優化後,生成相應的匯編代碼文件。
編譯過程相當於以下命令:
$gcc -S hello.i -o hello.s