cygwin中的g ++不会创建.exe文件

时间:2012-01-11 00:31:58

标签: g++ cygwin

我刚刚在运行Windows 7的新Windows机器上安装了cygwin,当我编译c ++程序时,我的行为很有趣。这是我输入的内容:

g++ test.gpp -o test

在我的其他Windows机器上,这会创建一个exe文件test.exe,它当然是一个可执行文件。但是在此安装上,将创建文件测试。令我惊讶的是,它不是可执行文件,而是看起来像一个调试文件(在ascii printables中)。如果我改为输入:

g++ test.gpp -o test.exe

然后我得到了可执行的test.exe。 (1)为什么在我的所有其他实现中,我获得可执行文件,但不是最近的尝试? (2)我为什么关心?好吧,我也在Linux机器上工作,我不习惯输入扩展名“.exe”。 (我讨厌非Linux文件的那个方面!)我猜我可以设置某种一次性标志,使g ++创建的默认文件是.exe文件。

这个问题的问题在于你们没有人能够重现它! (我不能在我的其他机器上!)

2 个答案:

答案 0 :(得分:3)

据我所知,g++无法识别.gpp扩展名。将文件从test.gpp重命名为test.cpp,然后重试。

在我的Cygwin系统上,g++ test.gpp给出了一条错误消息:

... file format not recognized; treating as linker script ...

Cygwin编译器会创建一个.exe扩展名的可执行文件(因为Windows需要它),但它也允许您引用没有后缀的此类文件。所以,例如:

ls -l test.exe

ls -l test

应该都显示相同的文件。 (如果你碰巧有两个名字的文件,事情可能会有点混乱 - 所以不要这样做。)g++的{​​{1}}选项也特别对待-s后缀,因此.exe-o test应该做同样的事情。

我不知道为什么你会看到你描述的行为。也许你碰巧在-o test.exe中看起来像一个有效的链接描述文件?

答案 1 :(得分:0)

g++ test.gpp -o test

这应该创建一个名为test的文件(没有扩展名)。如果创建该文件而不是使用chmod +x test

为文件提供可执行权限

而不是使用./test来运行它。看看它是否有效。