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

How to disable extension .exe generated by g++ in Cygwin?

本文关键字:扩展 exe g++ Cygwin      更新时间:2023-10-16

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

g++ -o helloworld helloworld.cpp

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

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

是的,有可能。这里是一个链接,我的答案与Cygwin GCC相同的事情。它也适用于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

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

如果您查看<cygwin-base>bin目录,您会发现它挤满了扩展名为.exe的可执行文件。只有像zcat这样的脚本文件没有它。

更有可能的是,扩展名似乎不存在的机器只是在文件资源管理器中关闭了扩展名。如果你进入cmd然后在目录下运行dir,你会看到它们