GCC編譯過程

2021-06-20 16:48:37 字數 702 閱讀 6414

第一步 預處理後結束 引數-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...