2013-10-02 22 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文件。 –