在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
答案 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