日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【本质】你知道C语言编译的过程吗?

發布時間:2023/12/19 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【本质】你知道C语言编译的过程吗? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、前言

如果你使用的是集成開發環境,那么你點擊編譯按鈕就可生成可執行文件,然后點擊運行即可運行。那么,你知道從源代碼到可執行文件經歷了哪些過程嗎。僅僅是編譯?

下面以windows環境下的test.c為例,test.c里的代碼為:

#include <stdio.h> int main(void) {printf("This is a test program!\n");return 0; }

其經歷如下過程:

如圖,編譯生成可執行文件的過程實際包含四個過程:(1)預處理;(2)編譯;(3)匯編;(4)鏈接。

2、預處理(Preprpcessing)

使用預處理器把源文件test.c經過預處理生成test.i文件,預處理用于將所有的#include頭文件以及宏定義替換成其真正的內容。

預處理的命令為:

gcc -E test.c -o test.i

上述命令中-E是讓編譯器在預處理之后就退出,不進行后續編譯過程;-o是指定輸出文件名。

預處理之后得到的仍然是文本文件。test.i文件部分內容截圖如下:

3、編譯(Compilation)

使用編譯器將預處理文件test.i編譯成匯編文件test.s。

編譯的命令為:

gcc -S test.i -o test.s

上述命令中-S讓編譯器在編譯之后停止,不進行后續過程;-o是指定輸出文件名。匯編文件test.s是文本文件,部分內容截圖如下:

4、匯編(Assemble)

使用匯編器將匯編文件test.s轉換成目標文件test.o。

匯編過程的命令為:

gcc -c test.s -o test.o

上述命令中-c、-o讓匯編器把匯編文件test.s轉換成目標文件test.o。目標文件test.o是二進制文件,部分內容截圖如下:

5、鏈接(Linking)

鏈接過程使用鏈接器將該目標文件與其他目標文件、庫文件、啟動文件等鏈接起來生成可執行文件。

鏈接過程的命令為:

gcc test.o -o test.exe

綜上,生成可執行程序過程為:預處理、編譯、匯編、鏈接。各個命令如下圖所示:

-END-

往期好文合集

電路與愛情<<戳這里

是否要從單片機轉嵌入式Linux?<<戳這里

關于「無人駕駛」的學習路線...<<戳這里

??最 后??

?

若覺得文章不錯,轉發分享,也是我們繼續更新的動力。

5T資源大放送!包括但不限于:C/C++,Linux,Python,Java,PHP,人工智能,PCB、FPGA、DSP、labview、單片機、等等

在公眾號內回復「更多資源」,即可免費獲取,期待你的關注~

長按識別圖中二維碼關注

總結

以上是生活随笔為你收集整理的【本质】你知道C语言编译的过程吗?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。