Skip to content

从构建到运行 ​

构建阶段:预处理、编译、汇编、链接

运行阶段:加载、CPU 执行

在链接阶段,链接器解析所有的目标代码,将程序所需的静态库代码复制并嵌入到最终产品中;

在链接阶段,链接器为程序所需共享库记录引用标记;

构建阶段 ​

预处理阶段 ​

预处理阶段相当于一个文本处理器,负责

  • 嵌入 #include 头文件内容
  • 展开有 #define 定义的宏
  • 移除注释
  • 解析条件编译指令

最终生成一个不包含任何预处理指令的纯净源代码文件。

编译阶段 ​

编译阶段,编译器对预处理阶段得到的纯净源代码文件进行

  • 词法、语法和语义分析
  • 确认无误后,对代码进行优化并转换为特定目标平台的汇编代码

汇编阶段 ​

汇编阶段,汇编器将编译阶段得到的汇编代码翻译成机器码,并将这些指令和相关数据打包成为一种标准格式的文件,即目标文件。

链接阶段 ​

链接阶段,链接器将目标文件与所需的静态库合并,通过

  • 符号解析将函数调用与其实际定义地址匹配

这一过程,最终生成一个单一完整的可执行文件,如 Linux 的 ELF 文件 或 Winodws 的 EXE 文件。

特点:链接器会将被用到的代码完整地从静态库复制并嵌入到最终的可执行文件中。

运行阶段 ​