我在两台不同的机器上编译.c文件并在cygwin中生成.exe文件: 一个窗口8 64位,另一个窗口7 64位。
每件事情都是类似的: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 :(得分:0)
你可能在两台机器上使用32位cygwin,但在Windows 8上它编译为64位可执行文件。简单地告诉gcc
生成带有-m32
标志的32位代码,类似于:
gcc -std=gnu99 -m32 -o .....