5

在 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
4

1 回答 1

4

遇到了一个类似的问题,结果证明是一个愚蠢的错误:在 -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
于 2013-12-01T19:43:20.143 回答