-c选项在GCC中做什么

有谁知道-c标志在gcc做了什么?

例如,有什么区别

 gcc -c output0.c vs gcc output0.c 

我知道第二个创建.a文件,但我不是.a文件。

还有-o做什么

 gcc output0.o -o output0 

只是将输出文件命名为right?

-C

编译或汇编源文件,但不要链接。 链接阶段根本没有完成。 最终输出是每个源文件的目标文件的forms。

默认情况下,源文件的目标文件名是通过将后缀.c,.i,.s等替换为.o来实现的。 无法识别的输入文件(不需要编译或汇编)将被忽略。

-o文件

将输出放在文件文件中。 无论是生成什么类型​​的输出,无论是可执行文件,目标文件,汇编程序文件还是预处理C代码,这都适用。 如果未指定-o,则缺省情况是将可执行文件放在a.out中,source.so中的source.suffix对象文件,source.s中的汇编程序文件,source.suffix.gch中的预编译头文件。 ,以及标准输出上的所有预处理C源。

更多信息可以在GCC手册页中找到

-c将指示gcc仅将源文件编译为.o(对象)文件,但不调用链接器。

对于包含许多.c文件的项目,通常会先将所有.c文件编译为.o文件,然后将所有文件与库链接在一起。

-c编译或汇编源文件,但不链接。 链接阶段根本没有>完成。 最终输出是每个源文件的目标文件的forms。

  By default, the object file name for a source file is made by replacing the suffix >.c, .i, .s, etc., with .o. Unrecognized input files, not requiring compilation or assembly, are ignored. 

来自man gcc

-c编译或汇编源文件,但不链接。 链接阶段根本没有完成。 最终输出是每个源文件的目标文件的forms。

默认情况下,源文件的目标文件名是通过将后缀.c,.i,.s等替换为.o来实现的。

无法识别的输入文件(不需要编译或汇编)将被忽略。