在MinGW中,运行g ++:
#include <iostream> using namespace std; int main() { cout<<"hi"; return 0; }
很高兴地创build一个二进制文件,但是如果我尝试从MinGW shell运行二进制文件,它会抱怨Bad file number
,如果我尝试从Windows运行,它会抱怨二进制文件是一个16位文件。 有没有我应该传递给g ++的开关?
注意事项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
进入一个类似的问题,结果是一个愚蠢的错误:除-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