linux編譯和鏈結指令

2021-10-23 13:04:38 字數 661 閱讀 6801

1.預編譯(生成.i檔案)

(1)將所有的「#define」刪除,並且展開所有巨集;

(2)處理掉所有條件預編譯指令,如:「#if」、「#ifdef」、「#elif」、「#else」、「#endif」;

(3)處理「#include」指令,這是乙個遞迴過程;

(4)刪除所有的注釋「//」和「/* */」;

(5)新增行號和檔名標識;

(6)保留所有的#pragma編譯器指令,待編譯器使用;

2.編譯(生成.s檔案)

把預處理完的檔案進行一系列的詞法分析,語法分析,語義分析及優化後生成相對應的彙編**檔案。

3.彙編(生成.o檔案,也叫目標檔案)

彙編器是將彙編**轉變成機器可以執行的指令,每乙個彙編語句幾乎都對應一條機器指令。

4.鏈結(生成.exe檔案,也叫可執行檔案)

(1)位址和空間分配;

(2)符號解析;

(3)符號重定位;

linux編譯鏈結指令

從main.c變為可執行檔案main

編譯和鏈結

一般來說,無論是c c 首先要把原始檔編譯成中間 檔案,在windows下也就是 obj 檔案,unix下是 o 檔案,即 object file,這個動作叫做編譯 compile 然後再把大量的object file合成執行檔案,這個動作叫作鏈結 link 編譯時,編譯器需要的是語法的正確,函式與...

編譯和鏈結

在多道程式的實現中,要想使原始檔生成可執行檔案通常需要兩個步驟編譯和鏈結,其中編譯是指將原始檔編譯為中間 檔案,在linux中為 o檔案,其實質就是由c或c 等高階語言生成組合語言。生成可執行檔案,我們以編譯c c 為例,在windows中編譯生成的為.obj檔案,在linux unix中生成.o檔...

編譯和鏈結

平時,我們口頭上並不嚴格區分 編譯 compile 與 鏈結 link 這兩個專業術語。例如我們總是說 把那個 c檔案編譯成可執行檔案 寫成命令就是 gcc example.c 這個命令馬上給我們產生乙個 a.out 如果程式沒有錯誤的話 實際上,整個工作至少要分成四個階段,分別由不同的程式完成 第...