C++源文件到可執行文件的過程

一.四個步驟   

   對於C/C++編寫的程序,從源代碼到可執行文件,一般經過下面四個步驟:
1).預處理,產生.ii文件
2).編譯,產生彙編文件(.s文件)
3).彙編,產生目標文件(.o或.obj文件)
4).鏈接,產生可執行文件(.out或.exe文件)
   
    以hello.c爲例,這個過程可以用下面的圖來表示



二.預處理

   預處理主要包含下面的內容:
a.對所有的“#define”進行宏展開;
b.處理所有的條件編譯指令,比如“#if”,“#ifdef”,“#elif”,“#else”,“#endif”
c.處理“#include”指令,這個過程是遞歸的,也就是說被包含的文件可能還包含其他文件
d.刪除所有的註釋“//”和“/**/”
e.添加行號和文件標識
f.保留所有的“#pragma”編譯器指令
    經過預處理後的.ii文件不包含任何宏定義,因爲所有的宏已經被展開,並且包含的文件也已經被插入到.ii文件中。

三.編譯

    編譯的過程就是將預處理完的文件進行一系列詞法分析,語法分析,語義分析及優化後生成相應的彙編代碼文件(.s文件)



四.彙編

    彙編器是將彙編代碼轉變成機器可以執行的代碼,每一個彙編語句幾乎都對應一條機器指令。最終產生目標文件(.o或.obj文件)。



五.鏈接

   鏈接的過程主要包括了地址和空間分配(Address and Storage Allocation)、符號決議(Symbol Resolution)和重定位(Relocation)



版權所有,歡迎轉載,轉載請註明出處,謝謝微笑


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章