2016-01-21 5 views
0

Я скомпилировал .c файл и сгенерировал .exe-файл в cygwin на двух разных машинах: Один Windows 8 64-бит и еще один Windows 7 64-бит.различные результаты cygwin на двух разных машинах: «невозможно выполнить двоичный файл»

Каждая вещь похожа: Cygwin, команда компиляции: gcc -std=gnu99 -o ....., PATH в переменной окружения, и т.д. Но .exe файл выполняется на win7 машине, но на Win8 машине, я получаю эту ошибку:

cannot execute binary file: Exec format error. 

I запустить 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 для создания 32-битного кода с -m32 флагом, что-то вроде:

gcc -std=gnu99 -m32 -o ..... 
Смежные вопросы