乙個.c檔案變成乙個可執行檔案需要四個步驟,如下圖所示:
選項功能
-v檢視gcc編譯器的版本,顯示gcc執行時的詳細過程
-o 指定輸出檔名為file,這個名稱不能跟源檔名同名
-e只預處理,不會編譯、彙編、鏈結
-s只編譯,不會彙編和鏈結
-c編譯和彙編,不會鏈結
1、通過 gcc -e -o ***.i ***.c 只預處理、不編譯、彙編、鏈結命令,檢視.i檔案可以知道預處理的工作是將標頭檔案展開、將巨集替換為他所帶表的值、條件編譯用起來。以「#」開頭的命令被稱為預處理命令,如包含命令「#include」、巨集定義命令「#define」、條件編譯命令「#if」、「#ifdef」等。預處理就是將要包含(include)的檔案插入原檔案中、將巨集定義展開、根據條件編譯命令選擇要使用的**,最後將這些東西輸出到乙個「.i」檔案中等待進一步處理。
2、通過gcc -s -o ***.s ***.i 命令可以知道編譯是把上述的.i檔案翻譯成彙編**。這過程是會檢測程式中有沒有語法錯誤的。
3、通過gcc -c -o ***.o ***.s 命令可以知道彙編是將上述第二步輸出的.s彙編檔案翻譯成一定格式的機器**
4、通過gcc -o *** ***.o 命令可以將眾多的檔案鏈結起來。
gcc常使用方法:
gcc -c -o ***.o ***.c
gcc -o *** ***.o
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...