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

问题描述 投票:0回答:3

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

bash: cannot execute binary file: Exec format error.

首先,我认为这是因为我的 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

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

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

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

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
windows bash unix executable elf
3个回答
7
投票

file
所示,您的程序是一个Linux应用程序,因此您无法在Windows上运行它。见

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

WSL2

中运行它 既然你有了源代码,你也可以用 mingw 或 cygwin 编译代码并在 Windows 上运行


2
投票
64 位 Windows 10

上的虚拟机 (VirtualBox) 上安装了 32 位 Linux(我使用 Linux Mint Debian 版),并且它成功了!


0
投票

-bash: /usr/bin/my-script: cannot execute binary file: Exec format error

我找到了在arm CPU上运行x86-64文件的通用解决方案。运行以下代码修复了它:

sudo apt update sudo apt install -y qemu-user-static binfmt-support sudo dpkg --add-architecture amd64 sudo apt update sudo apt install libc6:amd64

来源:
https://www.kali.org/docs/arm/x86-on-arm/

© www.soinside.com 2019 - 2024. All rights reserved.