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号