【Linux】-GCC编译器的编译流程

GCC 编译器的编译流程是:

预处理-->编译-->汇编-->链接

  • 预处理就是展开所有的头文件、 替换程序中的宏、解析条件编译并添加到文件中。

  • 编译是将经过预编译处理的代码编译成汇编代码,也就是我们常说的程序编译。

  • 汇编就是将汇编语言文件编译成二进制目标文件。

  • 链接就 是将汇编出来的多个二进制目标文件链接在一起,形成最终的可执行文件,链接的时候还会涉 及到静态库和动态库等问题

一般讲的编译就是生成可执行的二进制文件,默认是.o文件。

例如:单个main.c的文件可以进行如下编译,生成a.out可执行文件,然后直接运行./a.out就可以输出hello world了:

 也可以通过使用参数“-o”来指定 编译生成的可执行文件名字:

 以上都只有一个文件,而且文件非常简单,因此可以直接使用 gcc 命令生成可执行文件,并没有先将 c 文件编译成.o 文件,然后再链接在一起。

如果是多个c文件呢?

上述命令前三行分别是将 main.cinput.c calcu.c 编译成对应的.o 文件,所以使用了“- c”选项,“-c”选项就是只编译不链接。最后一行命令是将编译出来的所有.o 文件链接成可执行文件 main。

当然也可以合并写:

 使用 gcc 编译器对 main.ccalcu.c input.c 这三个文件进行编译,编译生成的可执行文件叫做 main.

猜你喜欢

转载自blog.csdn.net/ggbb_4/article/details/130753055