作用:展開巨集,把頭檔案內容解發布來生成*.i檔案;
a、將#include的內容解發布來
b、處理條件預處理命令,比如#if #ifdef #elif #else #endif等
c、刪除所有的注釋 /* ... */ //
d、展開巨集定義
gcc 原始檔(***.c) -e -o ***.i
gcc vol.c -e -o vol.i
gcc: 編譯器
vol.c: 原始檔(***.c)
-e,-o: 不可更改
***.i: 預編譯檔案
作用:檢查語法錯誤,翻譯成組合語言 (面試或者筆試會考)
gcc vol.i -s -o vol.s
gcc ***.i -s -o ***.s
gcc: 編譯器
***.i: 預編譯檔案
-s,-o: 不可更改
***.s: 彙編檔案
作用:將組合語言生成機器指令
gcc vol.s -c -o vol.o
gcc ***.s -c -o ***.o
gcc: 編譯器
***.s: 彙編檔案
-c,-o: 不可更改
***.o: 機器指令
作用:鏈結器將程式執行所需要的一大堆目標檔案、所依賴的其它庫檔案鏈結生成可執行檔案
gcc vol.o -o vol
gcc ***.o -o ***
gcc: 編譯器
***.o: 機器指令
-o: 不可更改
***: 可執行檔案
執行:
./*** //執行***
一句搞定:
gcc vol.c -o vol.o
gcc -o sizeof.o sizeof.c
11 GCC的基本使用
一.常用編譯命令選項 假設源程式檔名為test.c 1.無選項編譯鏈結 用法 gcc test.c 作用 將test.c 預處理 彙編 編譯並鏈結形成可執行檔案。這裡未指定輸出檔案,預設輸出為 a.out 2.選項 o 用法 gcc test.c o test 作用 將test.c 預處理 彙編 編...
gcc編譯過程
本文對gcc編譯器如何工作做乙個概要描述.更為詳細的資訊請參考編譯器手冊。當我們進行編譯的時候,要使用一系列的工具,我們稱之為工具鏈.其中包括 預處理器cpp,編譯器前端gcc g 彙編器as,聯結器ld.乙個編譯過程包括下面幾個階段 1 預處理。預處理器cpp將對原始檔中的巨集進行展開。2 編譯。...
gcc編譯過程
當我們進行編譯的時候,要使用一系列的工具,我們稱之為工具鏈.其中包括 預處理器cpp,編譯器前端gcc g 彙編器as,聯結器ld.乙個編譯過程包括下面幾個階段 1 預處理。預處理器cpp將對原始檔中的巨集進行展開。2 編譯。gcc將c檔案編譯成彙編檔案。3 彙編。as將彙編檔案編譯成機器碼。4 連...