.預處理階段:
編譯器以c檔案作為乙個單元,首先讀這個c檔案,發現第一句與第二句是包含乙個標頭檔案,就會在所有搜尋路徑中尋找這兩個檔案,找到之後,就會將相應標頭檔案中再去處理巨集,變數,函式宣告,巢狀的標頭檔案包含等,檢測依賴關係,進行巨集替換,看是否有重複定義與宣告的情況發生,最後將那些檔案中所有的東東全部掃瞄進這個當前的c檔案中,形成乙個中間「c檔案」
編譯:
編譯時是進行語法檢查、函式分配空間,將各個函式編譯成二進位製碼,按照特定目標檔案格式生成目標檔案
連線:
假如乙個程式包含多個檔案,在分別對每個源程式進行編譯並得到多個目標程式後,要把這些目標程式連線起來,同時還要同系統提供的資源(如函式庫)連線成為乙個整體,如果不出現錯誤,會得到乙個字尾為 .exe的可執行檔案
執行:
執行時是執行連線好的程式(具體的沒有找到相關資料) 將各個目標檔案中的各段**進行絕對位址定位,生成跟特定平台相關的可執行檔案,當然,最後還可以用objcopy生成純二進位製碼,也就是去掉了檔案格式資訊 (此下劃線句摘自
一般說來編譯器會做以下幾個過程:
1.預處理階段
2.詞法與語法分析階段
3.編譯階段,首先編譯成純彙編語句,再將之彙編成跟cpu相關的二進位製碼,生成各個目標檔案
4.連線階段。
預處理 編譯 連線 執行
1.預處理階段 編譯器以c檔案作為乙個單元,首先讀這個c檔案,發現第一句與第二句是包含乙個標頭檔案,就會在所有搜尋路徑中尋找這兩個檔案,找到之後,就會將相應標頭檔案中再去處理巨集,變數,函式宣告,巢狀的標頭檔案包含等,檢測依賴關係,進行巨集替換,看是否有重複定義與宣告的情況發生,最後將那些檔案中所有...
預處理 編譯 彙編 鏈結 執行
步驟 所進行的內容 生成的檔案 預處理展開標頭檔案 巨集替換 去掉注釋 條件編譯 test.i main i 編譯檢查語法,生成彙編 test.s main s 彙編彙編 轉換機器碼 目標檔案 test.o main.o 鏈結鏈結到一起生成可執行程式 可執行檔案 a.out 巨集優點 缺點 靜態鏈結...
預處理到執行 C編譯流程 指令 隨手筆記
完成巨集替換 檔案引入 以及去除空行 注釋等,為下一步的編譯做準備。對各種預處理命令進行處理,包含標頭檔案的包含 巨集定義的擴充套件 條件編譯的選擇等。命令 gcc e test.c o test.i e是讓gcc在預處理結束後停止編譯,test.c為源 檔案,test.i為預處理後輸出的檔案 講預...