C/C++ 的编译/链接过程是如何工作的?


C++ 程序的编译包含三个步骤:

  • 预处理 - 简单来说,C 预处理器只是一个文本替换工具,它指示编译器在实际编译之前进行必要的预处理。它处理诸如 #include、#define 等预处理指令。
  • 编译 - 编译发生在预处理的文件上。编译器解析纯 C++ 源代码并将其转换为汇编代码。这反过来又调用汇编器,将汇编代码转换为机器代码(二进制代码)作为目标文件。这些目标文件可能引用未定义的符号。除非源代码格式正确,否则编译器不会报错。语法错误、重载解析失败错误等都会在此步骤中发生。还要注意,这些目标文件也可以用作静态库。
  • 链接 - 链接器从编译器生成的多个目标文件生成最终的编译输出。此输出可以是共享(或动态)库或可执行文件。它通过用正确的地址替换未定义的引用来链接目标文件。这些符号应该在其他目标文件或库中定义。如果它们在标准库以外的库中定义,则需要将其显式地作为参数传递给编译器,以便可以找到并链接它们。


更新于:2020年1月27日

4K+ 次浏览

启动你的职业生涯

完成课程获得认证

开始学习
广告