第一步 預處理後結束 引數-e
gcc -e hello.c -o hello.i
檢視hello.i檔案中的內容
cat hello.i
stdio.h的內容插入到檔案裡去了,巨集定義也在預處理中都做了相應的處理
第二步 將hello.i 編譯為 目標** 引數 -c
gcc -c hello.i -o hello.o
第三步 將生成的目標檔案鏈結成為可執行檔案
gcc hello.o -o hello
將多個原始檔進行編譯並最終生成可執行程式
命令:gcc foo1.c foo2.c -o foo
相當於
gcc -c foo1.c -o foo1.o
gcc -c foo2.c -o foo2.o
#gcc foo1.o foo2.o -o foo
在編譯乙個包含許多原始檔的工程時,若只用一條gcc命令來完成編譯是非常浪費時間的。
假設專案中有100個原始檔需要編譯,並且每個原始檔中都包含 10000行**,如果像上面那樣僅用一條gcc命令來完成編譯工作,那麼gcc需要將每個原始檔都重新編譯一遍,然後再全部連線起來。
尤其是當使用者只是修改了其中某乙個檔案的時候,完全沒有必要將每個檔案都重新編譯一遍,因為很多已經生成的目標檔案是不會改變的。
要解決這個問題,關鍵是要靈活運用gcc,同時還要借助像make這樣的工具。
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 編譯過程
gcc 編譯分為四個過程舉例hello.c 的編譯過程 include int main 1 預處理gcc e hello.c o hello.i 省略了部分內容,包括 stdio.h 中的一些宣告及定義 預編譯過程主要處理那些源 中以 開始的預編譯指令,主要處理規則如下 l 將所有的 define...