收到错误:bash:(程序):无法执行二进制文件:Exec 格式错误,在 32 位和 64 位 Windows 上

Lei*_*ila 8 unix windows bash executable elf

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

bash: cannot execute binary file: Exec format error.
Run Code Online (Sandbox Code Playgroud)

首先,我认为这是因为我的 64 位操作系统,因为该文件是 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
Run Code Online (Sandbox Code Playgroud)

uname -srv对于我的 64 位操作系统,显示:

MINGW64_NT-10.0-19042 3.1.7-340.x86_64 2021-03-26 22:17 UTC
Run Code Online (Sandbox Code Playgroud)

uname -srv对于我的 32 位操作系统,显示:

MINGW32_NT-6.1-7601 3.1.7-340.i686 2021-03-26 22:01 UTC
Run Code Online (Sandbox Code Playgroud)

PS:如果你想尝试一下,这段代码应该可以在程序目录中运行,但它对我不起作用:

gunzip -c models/model2/events.gz | code/parser examples/sec23.tagged models/model2/grammar 10000 1 1 1 1 > examples/sec23.model2
Run Code Online (Sandbox Code Playgroud)

phu*_*clv 7

如 所示file,您的程序是Linux 应用程序,因此无法在 Windows 上运行。看

Mingw 不是运行Linux 可执行文件的环境,它只是一个将 POSIX 代码编译为本机 Windows 二进制文件的编译器。Cygwin 也不是,它是 Windows 中 POSIX 系统调用的重新实现,并且 Cygwin 二进制文件也是依赖于 Cygwin DLL 的本机 Windows 二进制文件。如果您想了解它们的差异,请阅读本文。Bash 是一个shell,也不是执行文件的平台。只有运行时平台(操作系统或类似 JVM 或 .NET CLR VM 的东西)才能运行程序,而shell只是与操作系统交互的工具

所以你必须在 Linux 环境中运行 Linux 程序,比如 Linux 机器或 WSL1/2。由于该程序是32位的,因此只能在Linux或WSL2中运行

由于您拥有源代码,您还可以使用 mingw 或 cygwin 编译代码并在 Windows 上运行