C++編譯流程
編譯器(Compiler)
編譯器是一種把人類寫的源代碼(C/C++)翻譯成計算機能執行的機器碼的程序。
在 C++ 中,常用的編譯器有:
| 編譯器 | 平臺 | 說明 |
|---|---|---|
| GCC(g++) | Linux / WSL / Windows(MinGW) | GNU 開源編譯器,使用最廣泛 |
| Clang | macOS / Linux | 快速現代的 LLVM 編譯器 |
| MSVC(cl.exe) | Windows | 微軟官方 C++ 編譯器,集成在 Visual Studio 中 |
| MinGW / MinGW-w64 | Windows | GCC 的 Windows 移植版 |
編譯流程
C++ 程序從
.cpp 文件到 .exe 可執行文件,會經歷 四個主要階段:1 預處理(Preprocessing)
-
處理
#include、#define、條件編譯等 -
生成
.i文件(展開后的源代碼)
示例
2 編譯(Compilation)
-
把預處理后的
.i文件轉成匯編語言(.s文件) -
檢查語法、類型、做優化
3 匯編(Assembly)
-
把匯編代碼
.s翻譯成目標代碼.o(或.obj)
4 鏈接(Linking)
-
把多個
.o文件和系統庫連接起來 -
解決函數調用、變量引用等鏈接
-
最終生成
.exe可執行文件
編譯四個階段命令(使用 g++)
g++ -E main.cpp -o main.i // -E:只執行預處理 g++ -S main.i -o main.s // -S:把代碼編譯成匯編語言 g++ -c main.s -o main.o //-c:把匯編代碼翻譯成目標文件(機器指令) g++ main.o -o hello // 把目標文件 main.o 和標準庫鏈接成最終的可執行程序 main.exe
或者一步到位
g++ -o hello main.cpp
示例 多文件項目示例
?? 項目結構
C++ 屬于典型的編譯型語言:源代碼需要經過完整的預處理、編譯、匯編和鏈接,最終生成二進制可執行文件。Python屬于解釋型語言:源代碼通過解釋器(Interpreter逐行讀取、逐行轉換為機器碼并執行,無需生成獨立的可執行文件,執行時必須依賴解釋器環境。
| C++(編譯型語言) | Python(解釋型語言) | |
|---|---|---|
| 執行方式 | 先編譯為可執行文件再運行 | 逐行解釋執行 |
| 運行速度 | 通常較快,接近機器碼執行速度 | 通常較慢,解釋執行效率低 |
| 依賴環境 | 不依賴運行時解釋器,僅需操作系統支持 | 運行時必須安裝 Python 解釋器 |
| 平臺移植性 | 需針對目標平臺重新編譯 | 高,只要有解釋器即可運行 |
| 內存管理 | 程序員手動分配和釋放內存(使用 new/delete 或智能指針) |
自動內存管理,內置垃圾回收機制(Garbage Collection) |
| 類型系統 | 靜態類型,變量類型在編譯時確定,類型檢查嚴格 | 動態類型,變量類型在運行時確定,更靈活但易出錯 |
| 適合的應用場景 | 高性能要求場景,如系統開發、圖形處理、游戲引擎 | 快速開發、腳本、數據分析、Web、人工智能等領域 |
參考:
1. Makefile教程

浙公網安備 33010602011771號