有谁知道-c
flag的作用是gcc
什么?
例如,有什么区别
gcc -c output0.c
vs gcc output0.c
我知道第二个制作.a
文件,但我不知道.a
文件是什么。
另外,在-o
做什么
gcc output0.o -o output0
只是命名输出文件吗?
-C
编译或汇编源文件,但不要链接。链接阶段根本没有完成。最终输出是每个源文件的目标文件形式。
默认情况下,源文件的目标文件名是通过将后缀 .c、.i、.s 等替换为 .o 来创建的。无法识别的输入文件,不需要编译或汇编,将被忽略。
-o 文件
将输出放在文件文件中。这适用于任何类型的输出,无论是可执行文件、目标文件、汇编文件还是预处理的 C 代码。如果没有指定-o,默认是在a.out中放一个可执行文件,在source.o中source.suffix的目标文件,在source.s中它的汇编文件,在source.suffix.gch中的一个预编译头文件,以及标准输出上的所有预处理 C 源代码。
更多可以在GCC 手册页中找到
来自man gcc
:
...
-c 编译或汇编源文件,但不链接。链接阶段根本没有完成。最终输出是每个源文件的目标文件形式。
默认情况下,源文件的目标文件名是通过将后缀 .c、.i、.s 等替换为 .o 来创建的。
无法识别的输入文件,不需要编译或汇编,将被忽略。
...
-c 将指示 gcc 仅将源文件编译为 .o(对象)文件,但不调用链接器。
对于包含许多 .c 文件的项目,通常首先将所有 .c 文件编译为 .o 文件,然后将所有内容与库链接在一起。
-C
编译或汇编源文件,但不要链接。链接阶段根本没有完成。最终输出是每个源文件的目标文件形式。
默认情况下,源文件的目标文件名是通过将后缀 >.c、.i、.s 等替换为 .o 来创建的。
无法识别的输入文件,不需要编译或汇编,将被忽略。