預處理:gcc -e 1.標頭檔案展開,2.以#開頭的**(包括巨集定義)
【< 是從系統的庫檔案找(系統自帶的),「是在當前的庫,找不到再從系統裡找(自己寫的)】
(3.條件編譯:#ifndef ...
#else
#endif)
編譯:gcc -c 1.語法檢查 2.詞法分析
彙編:gcc -s
鏈結過程生成可執行檔案
鏈結程式的主要工作就是將有關的目標檔案彼此相連線,也即將在乙個檔案中引用的符號同該符號在另外乙個檔案中的定義連線起來,
使得所有的這些目標檔案成為乙個能夠誒作業系統裝入執行的統一整體
(1)靜態鏈結
在這種鏈結方式下,函式的**將從其所在地靜態鏈結庫中被拷貝到最終的可執行程式中。
這樣該程式在被執行時這些**將被裝入到該程序的虛擬位址空間中。
(2)動態鏈結
在此種方式下,函式的**被放到稱作是動態鏈結庫或共享物件的某個目標檔案中。
鏈結程式此時所作的只是在最終的可執行程式中記錄下共享物件的名字以及其它少量的登記資訊。
動態鏈結程式將根據可執行程式中記錄的資訊找到相應的函式**。
gcc編譯過程
本文對gcc編譯器如何工作做乙個概要描述.更為詳細的資訊請參考編譯器手冊。當我們進行編譯的時候,要使用一系列的工具,我們稱之為工具鏈.其中包括 預處理器cpp,編譯器前端gcc g 彙編器as,聯結器ld.乙個編譯過程包括下面幾個階段 1 預處理。預處理器cpp將對原始檔中的巨集進行展開。2 編譯。...
gcc編譯過程
當我們進行編譯的時候,要使用一系列的工具,我們稱之為工具鏈.其中包括 預處理器cpp,編譯器前端gcc g 彙編器as,聯結器ld.乙個編譯過程包括下面幾個階段 1 預處理。預處理器cpp將對原始檔中的巨集進行展開。2 編譯。gcc將c檔案編譯成彙編檔案。3 彙編。as將彙編檔案編譯成機器碼。4 連...
GCC編譯過程
第一步 預處理後結束 引數 e gcc e hello.c o hello.i 檢視hello.i檔案中的內容 cat hello.i stdio.h的內容插入到檔案裡去了,巨集定義也在預處理中都做了相應的處理 第二步 將hello.i 編譯為 目標 引數 c gcc c hello.i o hel...