C++ 程序从源代码到执行经历了四个核心阶段:预处理、编译、汇编和链接。
预处理阶段:预处理器处理源代码中的宏定义(#define)、条件编译(#ifdef)、头文件包含(#include)等指令,生成一个单一的、纯净的翻译单元(translation unit)。此阶段完成文本级别的替换和展开。
编译阶段:编译器对预处理后的翻译单元进行词法分析、语法分析、语义分析,生成与平台相关的汇编代码(assembly code)。此阶段会进行类型检查和各种优化(如内联展开、循环优化等)。
汇编阶段:汇编器将汇编代码转换为机器可执行的二进制目标代码(object file,通常是.o或.obj文件)。目标文件包含机器指令和符号表,但地址尚未最终确定。
链接阶段:链接器将多个目标文件及所需的静态库(static libraries)合并,解析符号引用(如函数调用和全局变量访问),重定位地址,最终生成一个可执行的二进制文件(如ELF、PE格式)。动态库(shared libraries)的链接则可能延迟到加载时或运行时。
最终,操作系统加载器将可执行文件载入内存,设置运行环境(如堆栈、寄存器),并将控制权交给程序的入口点(如 main 函数),程序由此开始执行。
评论区