【问题标题】:How do I compile a file whose name begins with “-” (hyphen a.k.a. dash or minus)?如何编译名称以“-”(连字符也称为破折号或减号)开头的文件?
【发布时间】:2016-12-17 14:44:28
【问题描述】:

我有一个名为 -.o 的文件,它是通过以下方式创建的:

echo "int main(){}" | cc -xc -c -

如何将此文件链接到二进制文件?

命令同:

echo "int main(){}" | cc -xc -c - -o-.o

其中cc是默认编译器(用gcc 4.8.4clang 800.0.42.1测试),-xc认为输入是用C语言编写的,-c生成目标文件,-把stdin作为输入文件-o-.o 指定输出文件的名称。

所有这些命令都失败了:

cc -.o
cc -- -.o
cc "-.o"
cc \-.o
cc \\-.o
cc "\-.o"

出现这样的错误:

cc: error: unrecognized command line option ‘--’
cc: error: unrecognized command line option ‘-.o’
cc: error: \-.o: No such file or directory

显然我可以重命名文件,但这不是重点。我想知道为什么 -- 没有像 ls、cp、mv、...那样实现。

【问题讨论】:

  • @Destructor 我没有给出一个奇怪的文件名。编译器会。
  • 嗯,cc ./-.o 怎么样?
  • “编译器可以” - 它可以满足您的需求。当您编译该目标文件的源代码时,是您允许使用此名称。使用-o 选项指定一个合理的名称。
  • @Matthias 我的意思是,“为什么你会使用../parent-dir/-.o 而不是简单的./-.o?”这没有意义。
  • @Matthias 我仍然不明白为什么您(也)提供了一个完全没有意义的解决方案,并且在各方面都不如另一个解决方案(已经发布)。这与之前是否已经发布过问题无关。 - 除此之外,我不同意这个问题应该已经结束。这是一个有效的问题,在此站点上没有现有重复项(至少没有人链接到重复项)。

标签: gcc clang command-line-interface hyphen


【解决方案1】:

怎么样:

cc ./-.o

(来自@aschepler的评论)

【讨论】:

    猜你喜欢
    • 2020-09-05
    • 2011-01-26
    • 2011-11-05
    • 2011-11-26
    • 1970-01-01
    • 2013-02-04
    • 2019-07-02
    • 2012-01-11
    • 2019-01-31
    相关资源
    最近更新 更多