1. 程式人生 > 實用技巧 >linux -- gcc將原始碼轉化成可執行程式碼過程

linux -- gcc將原始碼轉化成可執行程式碼過程

gcc將原始碼轉化成可執行程式碼過程:
首先,C前處理器擴充套件原始碼, 插入所有用#include命令指定的檔案, 並擴充套件所有用#define宣告指定的巨集。
其次,編譯器產生原始碼的彙編程式碼,名字為“檔名.s”
接下來,彙編器會將彙編程式碼轉化成二進位制目的碼檔案“.o”(目的碼是機器程式碼的一種形式,它包含所有指令的二進位制表示,但是還沒填入全域性值的地址)
最後,連結器將目的碼檔案與實現庫函式(例如printf)的程式碼合併, 併產生最終的可執行程式碼檔案(可執行程式碼是機器程式碼的第二種形式,也就是處理器執行的程式碼格式)

參考資料:《深入理解計算機系統》

預處理後的檔案(一般為".i")

gcc -E .c
在這裡插入圖片描述

在這裡插入圖片描述

.s檔案(彙編程式碼)
gcc -Og -S 檔案.c
在這裡插入圖片描述

檔案.o(目標檔案)
gcc -Og -o 檔案.c

在這裡插入圖片描述
反彙編
objdump -d 檔案.o
在這裡插入圖片描述