1.101、C++文件编译与执行的四个阶段

C++文件的编译与执行通常经历四个阶段,每个阶段负责不同的工作,最终将源代码转换成可执行程序:


1. 预处理(Preprocessing)

  • • 由预处理器(如cpp)处理以#开头的预处理指令(#include#define、条件编译等)。
  • • 展开头文件内容,替换宏定义,删除注释,处理条件编译指令。
  • • 结果是一个纯文本的扩展源文件,通常以.i.ii为扩展名。

2. 编译(Compilation)

  • • 编译器将预处理后的源代码翻译成汇编代码。
  • • 进行词法分析、语法分析、语义分析和优化。
  • • 生成对应平台的汇编语言文件,通常扩展名为.s

3. 汇编(Assembling)

  • • 汇编器将汇编代码转换成机器码,生成目标文件(.o.obj)。
  • • 目标文件是二进制格式,包含机器指令和符号信息,但还未链接成完整程序。

4. 链接(Linking)

  • • 链接器将多个目标文件和库文件合并,解析符号引用,生成最终的可执行文件(如.exe或无扩展名的二进制文件)。
  • • 处理外部函数调用、全局变量地址分配等。

简要流程示意

源代码(.cpp/.c)
    ↓ 预处理
扩展源代码(.i/.ii)
    ↓ 编译
汇编代码(.s)
    ↓ 汇编
目标文件(.o/.obj)
    ↓ 链接
可执行文件(.exe/a.out)

本文首发于【讳疾忌医-note】公众号,未经授权,不得转载。
(加入我的知识星球,免费获取账号,解锁所有文章。)

阅读剩余
THE END