Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux cygwing++;不允许在windows 8上使用./file_Linux_G++_Cygwin - Fatal编程技术网

Linux cygwing++;不允许在windows 8上使用./file

Linux cygwing++;不允许在windows 8上使用./file,linux,g++,cygwin,Linux,G++,Cygwin,当我在cygwin上编译一个程序时,如下所示 g++ -o helloworld helloworld.cpp 将创建一个可执行文件helloworld.exe。但是,我无法使用 ./helloworld 但是我需要使用 ./helloworld.exe 是否有一种方法可以使cygwin将helloworld识别为文件helloworld.exe的可执行文件这与g++没有直接关系 Windows要求可执行文件(由编译器生成的类型,而不是批处理文件)的名称扩展名为.exe;这就是操作系统将它

当我在cygwin上编译一个程序时,如下所示

g++ -o helloworld helloworld.cpp
将创建一个可执行文件helloworld.exe。但是,我无法使用

./helloworld
但是我需要使用

./helloworld.exe

是否有一种方法可以使cygwin将
helloworld
识别为文件
helloworld.exe

的可执行文件这与g++没有直接关系

Windows要求可执行文件(由编译器生成的类型,而不是批处理文件)的名称扩展名为
.exe
;这就是操作系统将它们识别为可执行文件的方式

正如您所知,Cygwin在Windows上实现了一个类似POSIX的层。POSIX系统(UNIX、Linux等)不需要可执行文件的任何特殊后缀;操作系统根据文件本身中的“幻数”及其目录项中的可执行位将文件识别为可执行文件

为了弥补这一差距,Cygwin分别处理
.exe
扩展。像g++这样的编译器生成后缀为
.exe
的可执行文件,但Cygwin允许您通过键入
/helloworld.exe
/helloworld
来执行名为
helloworld.exe
的文件。(这甚至适用于其他操作;
ls-l helloworld
将显示有关
helloworld.exe
的信息——假设没有名为just
helloworld
的文件)

在本例中,根据您在注释中提供的信息,您的当前目录中显然有两个可执行文件,
helloworld.exe
helloworld

我不能100%确定Cygwin在这种情况下会做什么,但解决方案是删除
helloworld
文件,并确保您的可执行文件具有所需的
.exe
扩展名。默认情况下,Cygwin编译器将为您执行此操作;即使你跑

g++ helloworld.cpp -o helloworld
它将生成一个名为
helloworld.exe
的可执行文件


我不知道您是如何创建一个没有扩展名
.exe
的可执行文件的。不管是什么,不要再做了。

这是意料之中的行为。您可能已经习惯了CMD这样做,但linux shell需要确切的名称(甚至是大小写)。不,听起来像是一个bug报告。Cygwin过去一直允许您省略.exe。@事实上,我可以在我的windows 7计算机上使用./helloworld。我不知道是因为操作系统还是我错过了一些配置步骤。@Qix是错误的。作为Cygwin一部分的所有可执行文件的名称中都包含.exe!我怀疑这与g++有关。根据我的经验,Cygwin确实允许您以
/helloworld
/helloworld.exe
的形式调用当前目录中的
helloworld.exe
可执行文件。当前目录中是否还有另一个
helloworld.
文件?当您键入
/helloworld
时,会发生什么情况?(告诉我们你不能做某事远不如告诉我们你尝试时会发生什么有用。)@return0:出于好奇,你到底是如何创建名为
helloworld
而不是
helloworld.exe
的可执行文件的?