eclipse+CDT+cygwin编译出错:cannot execute binary file

编译一个C++程序,出现如下错误:

**** Build of configuration Debug for project dbdeal ****

make all
Building file: ../LoadSticTable.cpp
Invoking: Cygwin C++ Compiler
g++ -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF”LoadSticTable.d” -MT”LoadSticTable.d” -o”LoadSticTable.o” “../LoadSticTable.cpp”
cygwin warning:
MS-DOS style path detected: C:\cygwin\code\trunk\dbdeal\Debug
Preferred POSIX equivalent is: /code/trunk/dbdeal/Debug
CYGWIN environment variable option “nodosfilewarning” turns off this warning.
Consult the user’s guide for more details about POSIX paths:
http://cygwin.com/cygwin-ug-net/using.html#using-pathnames
/bin/sh: /usr/bin/g++: cannot execute binary file
make: *** [LoadSticTable.o] Error 126

注意最后两句是:

/bin/sh: /usr/bin/g++: cannot execute binary file
make: *** [LoadSticTable.o] Error 126

就是无法运行g++。
今天早上开机后直接启动eclipse,启动过程中提示”由于与64位版本的Windows不兼容,此程序或功能’\??\C:\cygwin\bin\g++.exe’无法启动或运行。请联系软件供应商询问是否有与64位Windows兼容的版本”,对话框标题竟然是“不支持的16位应用程序”,这下知道为什么eclipse总是编译出错了,g++是16位的版本,在windows 7 的 64 位机器上根本运行不了。

我在安装cygwin时把devel下的东西全装上了,就是用于开发的gcc、g++等编译工具都安装上了,所以在cygwin\bin目录下你会看到g++.exe、g++-3.exe、g++-4.exe至少3个g++版本,这下可以理解为什么了,cygwin安装编译器后默认用最老的那个g++版本作为默认编译器,也就是最老的16位g++.exe!

解决问题:

很简单,在cygwin\bin下找到g++.exe,改名为g++_bak.exe,把g++-3.exe拷贝一份,改名为g++.exe作为默认编译器。

再次编译程序,OK了。

eclipse+CDT+cygwin编译出错:cannot execute binary file》有2个想法

发表评论

电子邮件地址不会被公开。