Gcc 如何编译名称以“;开头的文件-”;(连字符又称破折号或减号)?

Gcc 如何编译名称以“;开头的文件-”;(连字符又称破折号或减号)?,gcc,clang,command-line-interface,hyphen,Gcc,Clang,Command Line Interface,Hyphen,我有一个名为-.o的文件,它是通过以下方式创建的: echo "int main(){}" | cc -xc -c - 如何将此文件链接到二进制文件? 该命令与以下命令相同: echo "int main(){}" | cc -xc -c - -o-.o 其中,cc是默认编译器(使用gcc4.8.4和clang 800.0.42.1进行测试),-xc认为输入是用C语言编写的,-C生成目标文件,-将stdin作为输入文件,-o-.o指定输出文件的名称 所有这些命令都失败: cc -.o cc

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

echo "int main(){}" | cc -xc -c -
如何将此文件链接到二进制文件?

该命令与以下命令相同:

echo "int main(){}" | cc -xc -c - -o-.o
其中,
cc
是默认编译器(使用
gcc4.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等中那样实现,

那么:

cc ./-.o
(摘自作者的评论)

那么:

cc ./-.o

(摘自作者的评论)

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