c進行預處理、編譯、連接、運行是做什麼

.預處理階段:

編譯器以C文件作爲一個單元,首先讀這個C文件,發現第一句與第二句是包含一個頭文件,就會在所有搜索路徑中尋找這兩個文件,找到之後,就會將相應頭文件中再去處理宏,變量,函數聲明,嵌套的頭文件包含等,檢測依賴關係,進行宏替換,看是否有重複定義與聲明的情況發生,最後將那些文件中所有的東東全部掃描進這個當前的C文件中,形成一箇中間“C文件”


編譯:

編譯時是進行語法檢查、函數分配空間,將各個函數編譯成二進制碼,按照特定目標文件格式生成目標文件


連接:

假如一個程序包含多個文件,在分別對每個源程序進行編譯並得到多個目標程序後,要把這些目標程序連接起來,同時還要同系統提供的資源(如函數庫)連接成爲一個整體,如果不出現錯誤,會得到一個後綴爲 .exe的可執行文件


運行:

運行時是執行連接好的程序(具體的沒有找到相關資料)     將各個目標文件中的各段代碼進行絕對地址定位,生成跟特定平臺相關的可執行文件,當然,最後還可以用objcopy生成純二進制碼,也就是去掉了文件格式信息     (此下劃線句摘自    http://zhidao.baidu.com/question/322035743.html



一般說來編譯器會做以下幾個過程:

 1.預處理階段 

2.詞法與語法分析階段 

3.編譯階段,首先編譯成純彙編語句,再將之彙編成跟CPU相關的二進制碼,生成各個目標文件

 4.連接階段。


發佈了12 篇原創文章 · 獲贊 52 · 訪問量 22萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章