gcc的工作流程
1.預處理
預處理階段時不做語法檢查而是執行以下步驟
a.頭文件展開
b.進行宏替換
c.進行條件編譯
總的來說就是“#”開頭的代碼在這一過程中編譯
[code]gcc -E test.c > test.i
/*對源文件test.c進行預處理並生成預處理文件test.i */
2.編譯
編譯時進行下列分析
1.詞法分析,主要負責檢查關鍵字、標識符是否准確
2.語法分析,主要負責檢查程序中語句的語法是否准確
3.語義分析,主要負責檢查程序中語句的邏輯意義是否正確
[code]gcc -c test.o
3.匯編
把匯編程序翻譯成CPU可識別的二進制文件,成為目標文件
[code]gcc -S test.c /*生成test.s文件*/
4.鏈接
鏈接的過程實際上為了解決多個文件之間符號引用的問題。因為編譯時只對單個文件進行編譯,若遇到文件裡需要引用到其他文件中的符號,則需要確定其他文件的地址,從而將目標文件和庫文件鏈接在一起形成可執行文件。