程式的編譯鏈結過程

2021-08-21 21:00:28 字數 542 閱讀 6979

一段源**到可執行性程式需要經歷預處理、編譯彙編和鏈結等步驟,接下來詳細介紹這些過程

假設檔案main.czhong有如下**:

# include int main()

(1)巨集定義指令

(2)條件編譯

(3)標頭檔案包含指令

(4)特殊符號處理

不能在標頭檔案中定義全域性變數,因為在標頭檔案中定義全域性變數將會使所有包含該標頭檔案的檔案存在該段**,也就是說這些檔案將定義乙個相同的全域性變數,這樣將不可避免的造成衝突 

(1)預編譯:通過詞法分析和語法分析,將其翻譯成等價的中間**或彙編**。

(2)優化:區域性優化、控制流分析和迴圈優化、資料流的分析和全域性優化。

在gcc中有另外一種簡單的操作只需一步就可完成以上的過程,如下:

命令:gcc -o main main.c

即:gcc -o 目標**名  源**名

程式編譯,鏈結過程

c語言的編譯鏈結過程要把我們編寫的乙個c程式 源 轉換成可以在硬體上執行的程式 可執行 需要進行編譯和鏈結。編譯就是把文字形式源 翻譯為機器語言形式的目標檔案的過程。鏈結是把目標檔案 作業系統的啟動 和用到的庫檔案進行組織形成最終生成可載入 可執行 的過程。過程 如下 預處理器 將.c 檔案轉化成 ...

C程式的編譯鏈結過程

程式由原始檔編譯得到可執行檔案看起來好像是很簡單的過程,windows的ide環境下,點一下bulid就可以生成可執行檔案,在linux環境下,gcc編譯器也提供了很多選項可以很方便的從原始檔生成可執行檔案。事實上程式的編譯和鏈結是乙個非常複雜的過程,ide幫我們隱藏了大量的細節。下面我們以最經典的...

程式的編譯和鏈結過程

c語言的編譯鏈結過程要把我們編寫的乙個c程式 源 轉換成可以在硬體上執行的程式 可執行 需要進行編譯和鏈結。編譯就是把文字形式源 翻譯為機器語言形式的目標檔案的過程。鏈結是把目標檔案 作業系統的啟動 和用到的庫檔案進行組織形成最終生成可載入 可執行 的過程。將乙個.c檔案編譯鏈結成.exe檔案,需要...