2013-10-02 24 views
3

在MinGW的,上运行的G ++:MinGW的G ++生产(涉嫌)16位二进制

#include <iostream> 

using namespace std; 

int main() 
{ 
    cout<<"hi"; 
    return 0; 
} 

令人高兴的是创建一个二进制文件,但如果我尝试从MinGW的二进制壳它抱怨的Bad file number,如果我尝试从Windows运行它,它抱怨该二进制文件是一个16位文件。有没有我应该传递给g ++的开关?

NB Msys和MinGW的新鲜安装,先前安装了cygwin。

编辑

>> g++ --version 
g++.exe (GCC) 4.8.1 

>> g++ --target-help 
... three screens worth of target options 

>> g++ -print-search-dirs 
install: c:\mingw\bin\../lib/gcc/mingw32/4.8.1/ 
programs:=c:/mingw/bin/../libexec/gcc/mingw32/4.8.1/;c:/mingw/bin/../libexec/gcc/;c:/mingw/bin/../lib/gcc/mingw32/4.8.1/../../../../mingw32/bin/mingw32/4.8.1/;c:/mingw/bin/../lib/gcc/mingw32/4.8.1/../../../../mingw32/bin/ 
libraries: =c:/mingw/bin/../lib/gcc/mingw32/4.8.1/;c:/mingw/bin/../lib/gcc/;c:/mingw/bin/../lib/gcc/mingw32/4.8.1/../../../../mingw32/lib/mingw32/4.8.1/;c:/mingw/bin/../lib/gcc/mingw32/4.8.1/../../../../mingw32/lib/;c:/mingw/bin/../lib/gcc/mingw32/4.8.1/../../../mingw32/4.8.1/;c:/mingw/bin/../lib/gcc/mingw32/4.8.1/../../../;/mingw/lib/mingw32/4.8.1/;/mingw/lib/ 

>> g++ -print-libgcc-file-name 
c:/mingw/bin/../lib/gcc/mingw32/4.8.1/libgcc.a 
+0

怎么样配置克++? – MSalters

+0

我该如何检查? – mrmagooey

+0

'--version'和'--target -help'命令行选项。 – MSalters

回答

2

跑进那竟然是一个愚蠢的错误了类似的问题:使用除-o选项-c选项。假设上面的代码是在main.cpp中:

$ g++ -std=c++11 -c main.cpp -o test.exe 
$ test.exe 
sh: ./test.exe: Bad file number 

跌落-c固定的问题(因为这意味着“编译和装配但不链接”)

$ g++ -std=c++11 main.cpp -o test.exe 
$ test.exe 
hi 
+0

因此,最终得到的文件具有可执行扩展名,但没有PE签名(因为它不是可执行文件)。 Windows将一个要求执行但没有可执行签名的文件视为16位MS-DOS .com文件。 –