C++的编译过程通常可以分为四个阶段:预处理、编译、汇编和链接。下面是这四个阶段的详细说明:
-
预处理(Preprocessing):在这个阶段,预处理器(cpp)会处理源代码文件中的预处理指令,如
#include
,#define
等。预处理器会将#include
指令指向的文件内容插入到源文件中,处理#define
定义的宏,处理条件编译指令等。预处理后的文件通常以.i
或.ii
为扩展名。 -
编译(Compilation):编译器(如g++)将预处理后的文件(
.i
或.ii
文件)转换为汇编语言文件。这个过程中,编译器会检查代码的语法错误,并进行词法分析、语法分析、语义分析和优化等操作。编译后的文件通常以.s
为扩展名。 -
汇编(Assembly):汇编器(如as)将汇编语言文件(
.s
文件)转换为目标文件。这个过程中,汇编器会将汇编代码转换为机器语言代码。汇编后的文件通常以.o
为扩展名,这些文件也被称为目标文件。 -
链接(Linking):链接器(如ld)将一个或多个目标文件(
.o
文件)链接为一个可执行文件或者库文件。这个过程中,链接器会解析目标文件之间的相互引用,将它们连接在一起。链接后的文件通常没有特定的扩展名,或者以.out
、.exe
(在Windows中)为扩展名。
https://blog.csdn.net/weixin_44115575/article/details/137040409