14

有谁知道-cflag的作用是gcc什么?

例如,有什么区别

gcc -c output0.c
vs gcc output0.c

我知道第二个制作.a文件,但我不知道.a文件是什么。

另外,在-o做什么

gcc output0.o -o output0

只是命名输出文件吗?

4

3 回答 3

14

-C

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

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

-o 文件

将输出放在文件文件中。这适用于任何类型的输出,无论是可执行文件、目标文件、汇编文件还是预处理的 C 代码。如果没有指定-o,默认是在a.out中放一个可执行文件,在source.o中source.suffix的目标文件,在source.s中它的汇编文件,在source.suffix.gch中的一个预编译头文件,以及标准输出上的所有预处理 C 源代码。

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

于 2013-02-06T08:15:52.473 回答
4

来自man gcc

...

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

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

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

...

于 2013-02-06T08:14:27.717 回答
3

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

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

-C

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

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

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

资源

于 2013-02-06T08:16:42.080 回答