Linux是如何編譯C語言程序文件的?CentOS 8的gcc使用方法介紹

Linux是如何編譯C語言程序文件的?CentOS 8的gcc使用方法介紹

一句話告訴你gcc怎麼編譯C文件

執行命令

gcc Tristone.c -o Tristone

解釋:將"Tristone.c"編譯為Tristone可執行文件,編譯完成以後"./Tristone"即可執行。

gcc的全稱是GNU C Compiler,原本設計出來是專門針對C語言的編譯器,後來擴展後也兼容了C++,java成了擴展版的GCC。

Linux是如何編譯C語言程序文件的?CentOS 8的gcc使用方法介紹

下面舉個實際的例子。

安裝GCC

CentOS Linux 8最小化安裝的時候,默認沒有安裝gcc,我們可以手動安裝一下。

root用戶執行命令:

dnf -y install gcc

Linux是如何編譯C語言程序文件的?CentOS 8的gcc使用方法介紹

默認安裝的gcc版本為8.2.1。

Linux是如何編譯C語言程序文件的?CentOS 8的gcc使用方法介紹

編寫一個C語言程序代碼

運行命令:

vi Tristone.c

把下列內容粘貼進去

#include<stdio.h>

int main()

{

printf("Hello,world!\\n");

return 0;

}

Linux是如何編譯C語言程序文件的?CentOS 8的gcc使用方法介紹

分步編譯測試

我們運行命令"gcc Tristone.c -o Tristone",其實編譯器走過了如下4個階段,我們可以一步一步看看都進行了什麼編譯工作:

(1)預處理階段(加入相應庫,宏替換等)

一個非常簡單的C文件預處理階段也會增加800多行的代碼,我們可以重定向到一個文件裡面查看。

gcc -E Tristone.c > Tri.e

Linux是如何編譯C語言程序文件的?CentOS 8的gcc使用方法介紹

(2)編譯階段(生成彙編程序)


gcc -S Tristone.c -o Tri.s

Linux是如何編譯C語言程序文件的?CentOS 8的gcc使用方法介紹

(3)彙編階段(把彙編語言程序彙編成機器語言指令,並使用可重定位目標程序的格式來打包指令)

gcc -c Tristone.c -o Tri.o

Linux是如何編譯C語言程序文件的?CentOS 8的gcc使用方法介紹

這一步生成的內容已經不是我們能讀懂的了。

(4)鏈接階段(合併各個打包好的機器語言指令,生成可執行二進制文件)


gcc Tri.o -o Tri

Linux是如何編譯C語言程序文件的?CentOS 8的gcc使用方法介紹

這個"Tri"已經是一個可執行的文件,運行一個後,將輸出一個"Hello,world!"

一步編譯

以上4步可以統一以下一個命令來實現:


gcc Tristone.c -o Tristone

Linux是如何編譯C語言程序文件的?CentOS 8的gcc使用方法介紹

格式:gcc 文件名.c -o 你需要執行文件名稱


從結果上看"Tri"和"Tristone"的文件大小是一樣的,也就是分步驟編譯和一步編譯,結果是一樣的。

自己寫一段C語言/C++的代碼或者從網上找一段代碼,使用Linux編譯一下試試吧。

Linux是如何編譯C語言程序文件的?CentOS 8的gcc使用方法介紹

詞雲編程語言或 it 相關


分享到:


相關文章: