-c选项在GCC中做什么

时间:2013-02-06 08:10:30

标签: c gcc gdb

是否有人知道-c标记在gcc中的作用是什么?

例如,

之间有什么区别
gcc -c output0.c
vs gcc output0.c

我知道第二个文件生成.a文件,但我不知道.a文件是做什么的。

-o

中做了什么
gcc output0.o -o output0

只是将输出文件命名为对吗?

3 个答案:

答案 0 :(得分:10)

  

<强> -c

     
    

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

         

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

  
     

-o file

     

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

GCC Manual Page

中可以找到更多内容

答案 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.