【发布时间】: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.4和clang 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