如何在Cygwin中禁用g ++生成的扩展.exe?

时间:2014-05-06 17:57:17

标签: c++ compilation g++ cygwin

在我的Windows 8.1机器上,我尝试编译kprogram

g++ -o helloworld helloworld.cpp

然后创建名为“helloworle.exe”的可执行文件。这与我在Windows 7机器上的Cygwin不一致,其中编译的可执行文件名为“helloworld”。如何消除Cygwin g ++生成的扩展?

我试图让它们保持一致,所以在git中不会有两个相同的文件。谢谢!

2 个答案:

答案 0 :(得分:1)

CygWin gcc套件总是生成.exe扩展名的可执行文件,因为它是在Windows环境中运行它们的方式。

如果你查看<cygwin-base>\bin目录,你会发现它的蜂拥有.exe扩展名的可执行文件。没有它的唯一文件是像zcat这样的脚本。

扩展程序似乎不存在的计算机很可能只是在文件资源管理器中关闭了扩展程序。如果您进入cmd并在该目录上实际运行dir,您就会看到它们。

答案 1 :(得分:1)

是的,这是可能的。这是我对 Cygwin GCC 相同问题的回答的 link。它也适用于 g++。

通过告诉链接器如何命名其输出。

$ echo -e "#include <iostream>\nclass myClass { public: myClass() { 
  std::cout << \"Hello here is my class.\\\n\"; } };\nint main(int nbargs, char *args[]) {
  myClass *myInstance = new myClass();
  }" | g++ -pipe  -x c++ - -Wl,-oess2

这将产生一个 ess PE32 / PE32+ 可执行文件,不是一个 ess.exe-pipe 选项指示 GCC 构建链不要写入临时文件,而是在阶段之间使用管道。 -Wl,-o 选项禁止默认 --force-exe-suffix