2016-01-21 58 views
0

我編譯.c文件並在2個不同的機器上生成cygwin中的.exe文件: 一個Windows 8 64位和另一個Windows 7 64位。不同的cygwin結果在2個不同的機器上:「不能執行二進制文件」

每一件事都是類似的:cygwin的,編譯命令:gcc -std=gnu99 -o .....,在環境變量PATH,等,但.exe文件執行win7的計算機上,但Win8的機器上,我得到這個錯誤:

cannot execute binary file: Exec format error. 

我運行file ./fileName和結果是:

對於WIN7:

PE32+ executable (console) x86-64, for MS Windows 

適用於Win8:

ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.24, BuildID ......, not stripped 
+0

這win8的輸出似乎表明你沒有建立一個Windows可執行文件。你確定編譯命令是一樣的嗎?編譯器(和編譯器版本)和編譯器工具鏈是一樣的嗎? –

回答

0

您可能在兩臺機器上都使用32位的cygwin,但在Windows 8上它將編譯爲64位可執行文件。簡單的告訴gcc產生與-m32標誌的32位代碼,類似:

gcc -std=gnu99 -m32 -o ..... 
相關問題