GCC编译过程

转: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

 

posted @ 2022-09-19 10:08  ainingxiaoguai  阅读(131)  评论(0编辑  收藏  举报