编译/链接过程如何在C / C ++中工作?

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

  • 预处理-简单来说,C预处理器只是一种文本替换工具,它指示编译器在实际编译之前进行所需的预处理。它处理诸如#include,#define等的预处理指令。

  • 编译-编译在预处理的文件上进行。编译器解析纯C ++源代码并将其转换为汇编代码。依次调用汇编程序,将汇编代码转换为目标文件的机器代码(二进制)。这些对象文件可以引用未定义的符号。除非源代码格式不正确,否则编译器不会给出错误。语法错误,失败的过载解析错误等在此步骤中发生。还要注意,这些目标文件也可以用作静态库。

  • 链接-链接器从编译器生成的目标文件中生成最终编译输出。此输出可以是共享(或动态)库或可执行文件。它通过使用正确的地址替换未定义的引用来链接目标文件。这些符号应在其他目标文件或库中定义。如果它们是在标准库以外的库中定义的,则需要将它们作为参数显式传递给编译器,以便可以找到并链接它们。