Getting the error: bash: (program): cannot execute binary file: Exec format error, on both 32-bit and 64-bit Windows

Getting the error: bash: (program): cannot execute binary file: Exec format error, on both 32-bit and 64-bit Windows

有一个为语言研究开发的程序 (http://people.csail.mit.edu/mcollins/code.html)。当我尝试在 Windows 上使用 Git bash 终端 运行 解析器时,出现错误:

bash: cannot execute binary file: Exec format error.

首先,我认为这是因为我的 64 位 OS,因为文件是 32 位的。因此,我在 32 位系统上尝试了该程序,但得到了相同的消息。

关于如何解决此问题的任何想法?:

file (program) 显示:

ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.2.5, with debug_info, not stripped

uname -srv 对于我的 64 位 OS,显示:

MINGW64_NT-10.0-19042 3.1.7-340.x86_64 2021-03-26 22:17 UTC

uname -srv 对于我的 32 位 OS,显示:

MINGW32_NT-6.1-7601 3.1.7-340.i686 2021-03-26 22:01 UTC

P.S.: 如果你想试一试,这段代码在程序目录中应该可以,但它对我不起作用:

gunzip -c models/model2/events.gz | code/parser examples/sec23.tagged models/model2/grammar 10000 1 1 1 1 > examples/sec23.model2

file 所示,您的程序是 Linux 应用程序,因此您不能 运行 它在 Windows.参见

Mingw 不是 运行ning Linux 可执行文件的环境,它只是一个将 POSIX 代码编译成 本机 Windows 二进制文件。 Cygwin 也不是,它是 Windows 中 POSIX 系统调用的重新实现,Cygwin 二进制文件也是 native Windows 二进制文件 具有依赖性在 Cygwin DLL 上。阅读 this if you want to know their differences. Bash is a shell and isn't a platform to execute files either. Only the runtime platform (OS or something like JVM or .NET CLR VM) can run programs and a shell 只是一个与 OS

互动的工具

因此您必须 运行 Linux 在 Linux 环境中编写程序,例如 Linux 机器或 WSL1/2。由于该程序是 32 位的,您只能在 Linux 或

中 运行

既然你有源代码,你也可以用 mingw 或 cygwin 和 运行 在 Windows

上编译代码

感谢@phuclv 提供的答案,我意识到我需要运行 Linux 中的程序。所以,我在 虚拟机 (VirtualBox ) 在我的 64 位 Windows 10 上,它成功了!