最近在查詢有關makefile的資料的時候又複習了一遍gcc編譯的過程。
1.預編譯
gcc -e hello.c -o hello.i
cpp hello.c > hello.i
2.編譯
gcc -s hello.i -o hello.s
3.彙編
gcc -c hello.s -o hello.o 或者 as hello.s -o hello.o
彙編是指第二步生成的彙編**變成機器可以執行的指令
4.鏈結 (link)
連線的過程就是鏈結動態庫和靜態庫的過程
生成的目標檔案.o與可執行檔案之間的區別?
目標檔案就是最後彙編之後生成的檔案,但是少了鏈結的那一步·,其實它與可執行檔案的內容大致是一致的,所以都被廣義的歸為一類檔案,也就是elf檔案,都是按照elf檔案格式儲存的
linux下的elf檔案型別
.o檔案、可執行檔案、核心轉儲檔案(core dump)、.so檔案(動態鏈鏈結庫)
gcc作用
其實gcc並非是編譯器,它是一系列的編譯程式套件,它類似於乙個介面我們輸入一些指令去讓他呼叫相應的編譯器。
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...