【问题标题】:Do I need to use -o when I run g++?运行 g++ 时需要使用 -o 吗?
【发布时间】:2012-01-22 07:03:06
【问题描述】:

我有一个非常小的 c++ 程序,它包含两个文件:main.cppsomething.cpp。我想在 OS X 终端中使用g++ 编译我的程序。这是我尝试过的:

> g++ main.cpp something.cpp
> ./a.out

这是正确的吗?我遇到过使用-o 标志的示例。我不确定这是否有必要。

【问题讨论】:

  • 如果加-o,比如g++ main.cpp something.cpp -o executable,那么它会在当前目录下创建一个名为executable的编译后的可执行文件。如果省略 -o 标志,g++ 将输出到预设文件名 a.out
  • 请说明您在尝试自行决定是否有必要时不了解有关该选项的文档的哪一部分。如果不了解当前文档有什么问题,我们就不能希望它得到改进。
  • 然而,今天使用a.out 程序名称的品味很差。 15 年前,a.out 也是一种可执行二进制文件格式,已被 ELF 取代。

标签: c++ macos compilation g++


【解决方案1】:

有效吗?这是正确性的一个很好的指示! -o 标志允许您指定文件名,因此可执行文件不会被命名为 a.out

【讨论】:

    【解决方案2】:

    -o 选项不是必需的。如果未指定,默认行为是将可执行文件放入“a.out”:

    -o 文件 将输出放在文件文件中。这适用于任何类型的输出,无论它是可执行文件 文件、目标文件、汇编程序 文件或预处理的 C 代码。

    如果不指定-o,则默认在a.out中放一个可执行文件,source.o中source.suffix的目标文件,其 source.s 中的汇编文件,一个 source.suffix.gch 中的预编译头文件,以及标准输出中的所有预处理 C 源代码。

    是的,这是正确的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-08
      相关资源
      最近更新 更多