C/C++编译过程
过程主要有四个:
- 编译预处理(Preprocessing)
- 编译、优化阶段(Compilation)
- 汇编过程(Assemble)
- 链接程序(Linking)
1. 编译预处理(Preprocessing)
预处理用于将所有的#include头文件以及宏定义替换成其真正的内容
将.c 文件转化成 .i文件
2. 编译、优化阶段(Compilation)
将经过预处理之后的程序转换成特定汇编代码(assembly code)的过程
将.c/.h文件转换成.s文件
3. 汇编过程(Assemble)
汇编过程将上一步的汇编代码转换成机器码(machine code),这一步产生的文件叫做目标文件,是二进制格式。
将.s 文件转化成 .o文件
4. 链接程序(Linking)
链接过程将多个目标文件以及所需的库文件(.so等)链接成最终的可执行文件(executable file)。
将.o文件转化成可执行程序
总结起来编译过程就上面的四个过程:
预编译处理(.c) --> 编译、优化程序(.s、.asm)--> 汇编程序(.obj、.o、.a、.ko) --> 链接程序(.exe、.elf、.axf等)。