C/C++ 的編譯/連結過程是如何工作的?
C++ 程式的編譯包含三個步驟:
- 預處理 - 簡單來說,C 預處理器只是一個文字替換工具,它指示編譯器在實際編譯之前進行必要的預處理。它處理諸如 #include、#define 等預處理指令。
- 編譯 - 編譯發生在預處理的檔案上。編譯器解析純 C++ 原始碼並將其轉換為彙編程式碼。這反過來又調用匯程式設計序,將彙編程式碼轉換為機器程式碼(二進位制)作為目標檔案。這些目標檔案可以引用未定義的符號。除非原始碼格式正確,否則編譯器不會報錯。語法錯誤、過載解析失敗錯誤等錯誤在此步驟中發生。還要注意,這些目標檔案也可以用作靜態庫。
- 連結 - 連結器從編譯器生成的.o目標檔案生成最終的編譯輸出。此輸出可以是共享(或動態)庫或可執行檔案。它透過用正確的地址替換未定義的引用來連結目標檔案。這些符號應該在其他目標檔案或庫中定義。如果它們在標準庫以外的庫中定義,則需要顯式地將它們作為引數傳遞給編譯器,以便可以找到並連結它們。
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP