是否有人知道-c
标记在gcc
中的作用是什么?
例如,
之间有什么区别gcc -c output0.c
vs gcc output0.c
我知道第二个文件生成.a
文件,但我不知道.a
文件是做什么的。
-o
在
gcc output0.o -o output0
只是将输出文件命名为对吗?
答案 0 :(得分:10)
中可以找到更多内容<强> -c 强>
编译或汇编源文件,但不要链接。链接 阶段根本就没有完成。最终的输出形式是 每个源文件的目标文件。
默认情况下,源文件的目标文件名由 用.o替换后缀.c,.i,.s等。无法识别的输入 文件,不需要编译或汇编,将被忽略。
-o file
将输出放在文件文件中。这适用于任何类型的 正在生成输出,无论是可执行文件还是对象 文件,汇编程序文件或预处理的C代码。如果-o不是 指定,默认是将可执行文件放在a.out中 source.o中source.suffix的目标文件,其汇编文件在 source.s,source.suffix.gch中的预编译头文件,以及所有 在标准输出上预处理C源。
答案 1 :(得分:3)
来自man gcc
:
...
-c编译或汇编源文件,但不要链接。链接阶段根本没有完成。最终的输出是在形式 每个源文件的目标文件。
默认情况下,源文件的目标文件名由 用.o。
替换后缀.c,.i,.s等无法识别的输入文件,不需要编译或汇编 忽略。
...
答案 2 :(得分:3)
-c将指示gcc仅将源文件编译为.o(对象)文件,但不调用链接器。
对于包含许多.c文件的项目,通常会先将所有.c文件编译为.o文件,然后将所有文件与库链接在一起。
-c编译或汇编源文件,但不要链接。链接阶段根本不是>完成的。最终输出是一个对象的形式 每个源文件的文件。
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.