C C 編譯流程(預處理 編譯 彙編 鏈結)

2021-09-02 00:04:08 字數 2758 閱讀 8731

c/c++ 程式常用檔名字尾:

序號拓展名說明

1.a

靜態庫,由目標檔案構成的檔案庫

2.c

c原始碼,必須經過預處理

3.c  .cc  .cpp

c++原始碼,必須經過預處理

4.h

c/c++原始碼的標頭檔案

5.i

.c經過預處理得到的c原始碼

6.ii

.c .cc .cpp經過預處理得到的c++原始碼

7.s

組合語言檔案,是.i檔案編譯後得到的中間檔案

8.o

目標檔案,是編譯過程得到的中間檔案

9.so

共享物件庫,也稱動態庫

程式的基本流程:

序號步驟工作內容

1預處理(preprocessc 編譯器對各種預處理命令進行處理,包括

(1)展開所有的標頭檔案

(2)巨集定義的替換

(3)解析條件編譯 並新增到檔案中

2編譯compile將預處理完的檔案進行詞法分析、語法分析、語義分析及優化後,生成相應的 .s 彙編**

3彙編assemble將編譯完的彙編**翻譯成機器碼,並生成可重定位目標程式的.o 目標檔案

4鏈結link通過鏈結器 ld 將目標檔案和庫檔案鏈結在一起,最後生成可執行檔案(executable file)

序號命令工作內容

1gcc  -e  hello.c  -o  hello.i

預處理(預處理器 preprocessor:cpp。-e 只對檔案進行預處理,不編譯彙編和鏈結)

2gcc  -s  hello.i  -o  hello.s

編譯(編譯器 compiler:gcc,g++。-s只對檔案進行編譯,不彙編和鏈結)

3gcc  hello.s  -o  hello.o

彙編(彙編器 assembler:as)

4gcc  hello.o  -o  hello

鏈結(鏈結器 linker:ld)

gcc 單步完成編譯:

第1種命令:gcc   hello.c   -o   hello

第2種命令:gcc  -o  hello  hello.c

預處理 編譯 彙編 鏈結

1.預處理 預處理器 預處理階段主要處理 include 和 define 它把 include包含進來的 h 檔案插入到 include 所在的位置,把源程式中使用到的用 define 定義的巨集用實際的字串代替。2.編譯階段 編譯器 在這個階段,編譯器先要檢查 的規範性和語法錯誤等,以確定 的實...

預處理,編譯, 優化, 彙編, 鏈結

編譯,編譯程式讀取源程式 字元流 對之進行詞法和語法的分析,將高階語言指令轉換為功能等效的彙編 再由匯程式設計序轉換為機器語言,並且按照作業系統對可執行檔案格式的要求鏈結生成可執行程式。c源程式標頭檔案 預編譯處理 cpp 編譯程式本身 優化程式 匯程式設計序 鏈結程式 可執行檔案 1.編譯預處理讀...

預處理,編譯, 優化, 彙編, 鏈結

編譯程式讀取源程式 字元流 對之進行詞法和語法的分析,將高階語言指令轉換為功能等效的彙編 再由匯程式設計序轉換為機器語言 目標檔案 並且按照作業系統對可執行檔案格式的要求鏈結生成可執行程式。c源程式標頭檔案 預編譯處理 cpp 編譯程式本身 優化程式 匯程式設計序 鏈結程式 可執行檔案 1.編譯預處...