转:https://blog.csdn.net/chen1415886044/article/details/104537547
GCC编译过程:
上述gcc命令其实依次执行了四步操作:
1.预处理(Preprocessing)
2.编译(Compilation),
3.汇编(Assemble),
4.链接(Linking)。
-
预处理
以“#”号开头的预处理指令如包含#include,宏定义制定#define等。在源程序中这些指令都放在函数之外,而且一般放在源文件的前面。
使用预处理器把源文件test.c经过预处理生成test.i文件。
预处理的命令为:
gcc -E test.c -o test.i
预处理生成的是test.i的文本文件,这个文本文件是可以直接通过cat命令进行文本文件查看的。
- 编译
这里的编译不是指程序从源文件到二进制程序的全部过程,而是指将经过预处理文件(test.i)之后的程序转换成特定汇编(test.s)代码的过程。
gcc -S test.i -o test.s
- 汇编
汇编过程将上一步的汇编代码转换成机器码,这一步产生的文件叫做目标文件,是二进制格式。
编译的命令为:
gcc -c test.s -o test.o
- 链接
链接过程使用链接器将该目标文件与其他目标文件、库文件、启动文件等链接起来生成可执行文件。附加的目标文件包括静态连接库和动态连接库。
链接过程的命令为:
gcc test.o -o test
标签:文件,GCC,gcc,链接,编译,test,过程,预处理 From: https://www.cnblogs.com/ainingxiaoguai/p/16706778.html