当我在cygwin上编译程序时,如下所示
g++ -o helloworld helloworld.cpp
创建可执行文件helloworld.exe。但是,我无法使用
执行该程序./helloworld
但我需要使用
./helloworld.exe
有没有办法让cygwin将helloworld
识别为文件helloworld.exe
的可执行文件
答案 0 :(得分:2)
这与g ++没有直接关系。
Windows要求可执行文件(由编译器生成的类型,而不是批处理文件)具有.exe
扩展名的名称;那就是操作系统如何将它们识别为可执行文件。
为弥合这一差距,Cygwin分别处理.exe
扩展。像g ++这样的编译器生成带有.exe
后缀的可执行文件,但Cygwin允许您通过键入helloworld.exe
或./helloworld.exe
来执行名为./helloworld
的文件。 (这甚至适用于其他操作; ls -l helloworld
会向您显示有关helloworld.exe
的信息 - 假设其中还没有名为helloworld
的文件。)
在这种情况下,根据您在评论中提供的信息,您显然在当前目录helloworld.exe
和helloworld
中有两个可执行文件。
我不能100%确定Cygwin在这种情况下会做什么,但解决方案是删除helloworld
文件,并确保您的可执行文件具有所需的.exe
扩展名。 Cygwin编译器默认会为您执行此操作;即使你跑
g++ helloworld.cpp -o helloworld
它将生成一个名为helloworld.exe
的可执行文件。
我不知道你在没有.exe
扩展名的情况下创建了一个可执行文件。不管是什么,不要再做了。