以 test.c 為例
1、一步到位的編譯時:
gcc test.c -o test
實際上,上面經過了四個階段進行的,即預處理(也稱預編譯,preprocessing)、編譯(compilation)、彙編(assembly)和鏈結(linking)。
2.1 預處理
gcc -e test.c -o test.i 或 gcc -e test.c
test.i檔案中存放著經過預處理的之後的**。
gcc -e 選項可以讓編譯器在預處理候停止,並輸出預處理結果,本次則是將標頭檔案的內容放入test.c中。
2.2 編譯(為彙編**)
預處理候,可直接對生成的test.i 生成彙編**:
gcc -s test.i -o test.s
gcc -s 選項表示在編譯期間生成彙編**後停止
2.3 彙編(assembly)
對於彙編**test.s,gas彙編器負責將其編譯為目標檔案:
gcc -c test.s -o test.o
2.4鏈結(linking)
gcc的鏈結器是有gas提供的,負責將程式的目標檔案與所需的所有附加的目標檔案連線起來,最終生成可執行檔案。附加的木匾檔案包括靜態鏈結庫和動態鏈結庫。對於上一小節中生成的test.o,將其與c=c標準輸入輸出庫進行連線,最終生成程式test。
gcc test.o -o test
使用gcc編譯簡單的程式
使用虛擬機器軟體vmware,環境為 ubuntu18.04。terminal終端編寫 如下 mkdir film1 新建資料夾film1 cd film1 進入film1資料夾 vi sub1.c 新建.c檔案 vi sub2.c vi main.c sub1.c內容如下 float x2x in...
GCC編譯簡單範例
原始檔為hello.c 無選項編譯鏈結 gcc hello.c將hello.c預處理 彙編 編譯並鏈結形成可執行檔案。這裡未指定輸出檔案,預設輸出為a.out 選項 o o選項用來指定輸出檔案的檔名 gcc hello.c o hello選項 e gcc e hello.c o hello.i將he...
GCC編譯簡單流程 彙總
一 過程 預處理編譯 彙編 鏈結。1 預處理 gcc e filename.c 對應的後台工具為cpp 預處理是c語言程式從源 變成可執行程式的第一步,主要是c語言編譯器對各種預處理命令進行處理,包括標頭檔案的包含 巨集定義的擴充套件 條件編譯的選擇等。cpp the c preprocessor,...