gcc編譯的四個過程

gcc是什麼?

GNU編譯器套件(GNU Compiler Collection)包括C、C++、Objective-C、Fortran、Java、Ada和Go語言的前端,也包括了這些語言的庫(如libstdc++、libgcj等等)。GCC的初衷是爲GNU操作系統專門編寫的一款編譯器。GNU系統是徹底的自由軟件。

gcc編譯的四個過程

gcc在執行編譯工作的時,分爲以下四個過程:
1.預處理,生成.i的文件
2.將預處理後的文件轉換成彙編語言,生成.s文件
3.彙編變爲目標代碼(機器代碼),生成.o的文件
4.連接目標代碼,生成可執行程序

盜用一張圖,圖解過程如下:
在這裏插入圖片描述

這裏我使用測試文件main.c來講解gcc編譯的四個過程

#include<stdio.h>
int main(void)
{
  //print hello world
  printf("Hello World\n");
  return 0;
}

1.預處理,生成main.i文件

gcc -E main.c -> main.i

在linux中,預處理後的文件以.i爲後綴名,這個過程只激活預處理,不生成文件,因此你需要把它重定向到一個輸出文件裏 。
這一步的功能主要是宏的替換和註釋的消除。

查看main.i文件
在這裏插入圖片描述

2.將預處理後的文件轉換成彙編語言,生成.s文件

gcc -S main.c 

生成main.s文件,用編輯器打開查看
在這裏插入圖片描述

3.彙編變爲目標代碼(機器代碼)生成.o的文件

gcc -c main.c 

在這裏插入圖片描述

4.連接目標代碼,生成可執行程序

gcc main.o -o main

執行命令gcc main.o,默認生成a.out,這裏我指定的是生成main執行文件,main與a.out是同文件不同名

查看main文件:
在這裏插入圖片描述

測試運行

生成的所有文件
在這裏插入圖片描述
執行結果:
./main
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章