MinGW g ++产生(据称)16位二进制

时间:2013-10-02 03:57:17

标签: c++ windows mingw

在MinGW中,运行g ++:

#include <iostream>

using namespace std; 

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

很高兴创建一个二进制文件,但如果我尝试从MinGW shell运行二进制文件,它会抱怨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

1 个答案:

答案 0 :(得分:3)

进入类似的问题,结果证明是一个愚蠢的错误:除-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