C語言的編譯過程

2021-07-03 20:32:49 字數 1111 閱讀 5484

乙個源程式執行得到結果一般都要經過編譯和執行的過程,c語言的編譯和執行過程如下:

編譯的過程:

編譯的功能是將人們能看懂的高階語言,轉換成計算機能看懂的二進位制語言,可以分為下面的六個階段:

乙個原始檔經過上述的6個過程即可轉化成目標**檔案,把高階語言轉化成機器語言。

c語言編譯的完整過程如下圖:

1、編譯預處理

處理偽指令和特殊符號。偽指令一般指以「#」為開頭的指令,包含以下四個方面:

(1)巨集定義指令

巨集定義又稱為巨集替換,指用乙個表示式替換另乙個式子,簡稱為巨集。

(2)條件指令

條件指令可以使程式設計師通過定義不同的巨集自由控制程式**的執行,執行哪些**,跳過哪些**。預編譯處理會將那些多餘的**去掉。

(3)標頭檔案指令

#include,是指把相應的標頭檔案包含至程式中,包含標頭檔案是為了包含標頭檔案中系統定義的函式,以便程式直接呼叫。

(4)特殊符號

預編譯的時候會檢測有無特殊符號,如line和file都被當做特殊符號處理,用適當的值來代替。

原始檔經過預編譯處理後會變成乙個沒有巨集定義、標頭檔案、條件指令和特殊符號的檔案,這個檔案與原始檔的功能是一樣的但是內容有所改變。

2、編譯和優化

編譯:把預編譯得到的檔案進行詞法、語法、語義分析等,使之轉化為功能等價的中間**或者彙編**。

優化:對**進行優化,減小**的時間和空間,提高執行效率。

3、匯程式設計序

乙個程式要執行必須轉化成機器語言,匯程式設計序是將彙編**轉化成機器**,即機器所能識別的**。

4、鏈結程式

鏈結程式把彼此有關的目標檔案都聯絡起來,即把這些檔案都聯絡成乙個統一的整體轉入機器的記憶體中,是目標檔案能夠相互呼叫。

C語言的編譯過程

編譯,編譯程式讀取源程式 字元流 對之進行詞法和語法的分析,將高階語言指令轉換為功能等效的彙編 再由匯程式設計序轉換為機器語言,並且按照作業系統對可執行檔案格式的要求鏈結生成可執行程式。c源程式標頭檔案 預編譯處理 cpp 編譯程式本身 優化程式 匯程式設計序 鏈結程式 可執行檔案 1.編譯預處理 ...

c語言的編譯過程

先感謝這篇文章 介紹了ld的庫檔案怎麼引用的 如下 test.c include void mian 今天看了下編譯的過程,gcc o test text.c 是一步到位的做法 要像一步一步做出來 了解怎麼編譯的,是這樣的 root localhost workspace cpp test.c te...

C語言的編譯過程

編譯 編譯程式讀取源程式 字元流 對之進行詞法和語法的分析,將高階語言指令轉換為功能等效的彙編 再由匯程式設計序轉換為機器語言,並且按照作業系統對可執行檔案格式的要求鏈結生成可執行程式。流程 c源程式標頭檔案 預編譯處理 cpp 編譯程式本身 優化程式 匯程式設計序 鏈結程式 可執行檔案 1.編譯預...