檔案編譯執行的4個階段

2021-07-11 13:18:04 字數 989 閱讀 1092

c 語言檔案的編譯的4個階段:

源**(.c / .cpp檔案)

-> (1.) 預編譯階段(操作符 gcc -e)。

預處理器在源**上執行一些文字操作。例如,用實際值代替由#define指令定義的符號以及讀入由#include指令包含的檔案內容。

-> (2.)編譯階段(操作符 gcc -s)。

源**經過解析,判斷它的意思。這個階段是產生絕大多數錯誤和警告資訊的地方。編譯器優化程式並最後生成彙編級指令(此階段產生檔名字尾為 .s)。

-> (3.)彙編階段(操作符 gcc -c)。

彙編檔案經過彙編器的處理,將檔案中的彙編級指令轉化成包含機器指令的目標檔案。這一階段只把現有的**轉換成機器**,而像printf()這樣的函式呼叫暫不解析。這階段的機器級檔案開啟不可讀。(這一階段產生的目標檔名字尾為 .o)。

-> (4.)鏈結階段(操作符 gcc)。

這是最後的階段,是將目標檔案和其他目標**(多檔案編譯的話)以及庫檔案進行鏈結。所以printf()函式在庫檔案中解析翻譯,程式才知道這個函式到底輸出什麼(之前只是簡單的採用佔位符)。

編譯器也做一些額外的操作:它把一些程式開始執行和程式結束執行時所需的附加**合併到程式中。這樣產生最後的可執行檔案既二進位制檔案。

c 語言檔案的執行的4個階段:

(1.)首先,程式必須載入記憶體中,這個任務由作業系統完成。 那些不是儲存在堆疊中的尚未初始化的變數將在這個時候得到初值。

(2.)執行開始,通常乙個小型的啟動程式與程式鏈結起來,它負責處理一系列日常任務,如收集命名行引數以便程式能夠訪問它,等等。

(3.)呼叫main(),開始執行程式**。在絕大數機器中,程式將使用乙個執行時的堆疊,它用於儲存函式的區域性變數和返回位址。

(4.)程式終止。終止的產生原因有很多,可能是正常終止,既main()返回。也有可能是在執行過程中產生錯誤自行終止,比如core dump 。也有可能是使用者按下break自行退出。

GCC編譯過程的4個階段

在使用gcc編譯程式時,其編譯過程可以分為4個階段 預處理 pre processing 編譯 compling 彙編 assembling 連線 linking 程式設計師完全可以根據自己的需要讓gcc在編譯的任何乙個階段結束,檢查活使用編譯起在該階段輸出的資訊,或者對其生成的二進位制檔案進行控制...

C語言檔案編譯執行的四個階段

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

編譯鏈結原理 總述 編譯階段 鏈結階段 執行原理

在平常的應用程式開發過程中,我們很少需要關注編譯和鏈結的過程,因為通常都是在整合的開發環境下執行,因此一般編譯和鏈結都是一步完成,通常將這種編譯和連線合併到一起的過程稱為構建。這樣雖然簡便,但是在這整個過程中,有時出現問題時,我們只能看到問題的表現,而很難看清本質性問題,所以對於這些一步完成的操作背...