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預處理(preprocess
)c 編譯器
對各種預處理命令
進行處理,包括
(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.編譯預處...