歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux技術 >> GCC的淺層理解

GCC的淺層理解

日期:2017/3/3 11:34:49   编辑:Linux技術

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.鏈接

鏈接的過程實際上為了解決多個文件之間符號引用的問題。因為編譯時只對單個文件進行編譯,若遇到文件裡需要引用到其他文件中的符號,則需要確定其他文件的地址,從而將目標文件和庫文件鏈接在一起形成可執行文件。

Copyright © Linux教程網 All Rights Reserved