源程序——預處理——編譯——匯編——鏈接——可執行文件
1) 預處理:不做語法檢查
命令行:gcc -E hello.c
由於預處理之後程序過多,一般將預處理之後的命令行放在hello.i中:gcc
-E hello.c > hello.i
預處理所處理的文件:1.頭文件加載
2.宏定義
3.[u]條件編譯[/u]
所謂條件編譯就是:
#include<stdio.h>
#define max 100
int main()
{
int a[max];
#ifdef max;
printf(“hello \n”);
//已經設置max的值,輸出hello
#else
printf(“nihao\n”);
//沒有設置max,輸出nihao
#endif
return 0;
}
2)編譯 :進行語法檢查,詞法分析
命令行:gcc -c hello.c 生成hello.o
3)匯編:匯編器是將匯編代碼轉變成機器可以執行的命令,每一個匯編語句幾乎都對應一條機器指令。
命令行:gcc -w hello.c //生產helllo.s,該文件為目標文件
4)鏈接
目標代碼不能直接執行,要想將目標代碼變成可執行程序,還需要進行鏈接操作,才會生成真正可以執行的可執行程序。鏈接操作最重要的步驟就是將函數庫中相應的代碼組合到目標文件中。鏈接器ld將各個目標文件組裝在一起,解決符號依賴,庫依賴關系,並生成可執行文件。