C/C++ 的編譯/連結過程是如何工作的?


C++ 程式的編譯包含三個步驟:

  • 預處理 - 簡單來說,C 預處理器只是一個文字替換工具,它指示編譯器在實際編譯之前進行必要的預處理。它處理諸如 #include、#define 等預處理指令。
  • 編譯 - 編譯發生在預處理的檔案上。編譯器解析純 C++ 原始碼並將其轉換為彙編程式碼。這反過來又調用匯編器,將彙編程式碼轉換為機器程式碼(二進位制程式碼)作為目標檔案。這些目標檔案可能引用未定義的符號。除非原始碼格式正確,否則編譯器不會報錯。語法錯誤、過載解析失敗錯誤等都會在此步驟中發生。還要注意,這些目標檔案也可以用作靜態庫。
  • 連結 - 連結器從編譯器生成的多個目標檔案生成最終的編譯輸出。此輸出可以是共享(或動態)庫或可執行檔案。它透過用正確的地址替換未定義的引用來連結目標檔案。這些符號應該在其他目標檔案或庫中定義。如果它們在標準庫以外的庫中定義,則需要將其顯式地作為引數傳遞給編譯器,以便可以找到並連結它們。


更新於:2020年1月27日

4K+ 次瀏覽

啟動你的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.