如何编译名称以“-”(连字符 a.k.a. 破折号或减号)开头的文件?
How do I compile a file whose name begins with “-” (hyphen a.k.a. dash or minus)?
我有一个名为 -.o
的文件,它是用以下方法创建的:
echo "int main(){}" | cc -xc -c -
如何link将此文件转换为二进制文件?
命令同:
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, ...
那样实现
怎么样:
cc ./-.o
(来自 @aschepler 的评论)
我有一个名为 -.o
的文件,它是用以下方法创建的:
echo "int main(){}" | cc -xc -c -
如何link将此文件转换为二进制文件?
命令同:
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, ...
怎么样:
cc ./-.o
(来自 @aschepler 的评论)