是什么让一个.c文件为.o文件将和链接和组装的区别的gcc编译.c文件在比较呢?(What is t

2019-10-22 00:41发布

我刚开始卷入与海湾合作委员会。

比方说我们通过VIM labaled helloworld.c写入一个文本文件

为什么会游泳(人谁是不是我)与编译

在比较GCC helloworld.cgcc -c helloworld.c然后gcc的-o的helloWorld helloworld.o?

Answer 1:

对于一个单一的文件,也没有用。 但是,如果你编译一个较大的项目,你可能不希望重新编译所有的文件,如果你只改变了一个实例。 因而,增益编译时间。

使用中间.o文件,您可以只重新编译需要重新编译一下,并与所有这些对象文件链接,最终的二进制。

另一个用例是,如果你想使用自定义链接脚本,例如选择你的部分或代码的位置。 然后,你需要从中获取实际的代码.o文件。



Answer 2:

有在编译过程中的一些阶段:

预处理 - >编译 - >装配 - >链接。

阶段:

  • 预处理:包括您的.h文件的一些测试到您的.c文件,并创建一个预处理的源代码。
  • 编译:从你的预处理代码创建汇编代码。
  • 组装:从你的汇编代码创建对象的模块。
  • 链接:从你的对象模块创建可执行文件。

当您使用gcc [options]

如果你使用:

  • gcc -E停止后预处理阶段,并为您提供了预处理代码。
  • gcc -S编译阶段,并为您汇编代码后停止。
  • gcc -c组装阶段后停止,并给你一个目标模块。

gcc -o为您提供了包含的名称的可执行文件,默认情况下为您提供了a.out

男人GCC HERE



文章来源: What is the difference compiling gcc .c file in comparison to making a .c file into an .o file and linking and assembling?