【问题标题】:What does -c option do in GCC [closed]-c 选项在 GCC 中有什么作用[关闭]
【发布时间】:2013-02-06 08:10:30
【问题描述】:

有人知道-c 标志在gcc 中的作用吗?

比如有什么区别

gcc -c output0.c
vs gcc output0.c

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

还有,-o在里面做了什么

gcc output0.o -o output0

只是给输出文件命名对吗?

【问题讨论】:

  • 我建议您阅读online documentation。例如名为"3.2 Options Controlling the Kind of Output"的部分
  • 我认为你能做的最好的就是阅读 gcc 的手册页。
  • “仅编译”gcc -c 仅生成目标文件。要生成可执行文件,您必须再次调用链接器。可能是man gcc? :)
  • 一般来说,看看你已经问过的其他问题,你需要学习如何使用免费提供的信息,然后再用你的问题打扰别人。如果您使用的是 linux 系统,man 是您的朋友。如果在本地找不到,请先使用搜索引擎。

标签: c gcc gdb


【解决方案1】:

-c

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

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

-o 文件

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

更多内容请关注GCC Manual Page

【讨论】:

    【解决方案2】:

    来自man gcc

    ...

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

    默认情况下,源文件的目标文件名由 将后缀 .c、.i、.s 等替换为 .o。

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

    ...

    【讨论】:

      【解决方案3】:

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

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

      -c

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

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

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

      source

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-01-20
        • 1970-01-01
        • 2012-10-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多