Soo*_*ang 133 executable
我正在尝试运行一个程序,但发生了这样的错误:
bash: ./program: cannot execute binary file: Exec format error
Run Code Online (Sandbox Code Playgroud)
结果file program
是:
program: ELF-32-bit LSB executable, ARM, EABI4 version 1 (SYSV), dynamically linked(uses share libs), for GNU/LINUX 2.6.16, not stripped
Run Code Online (Sandbox Code Playgroud)
我该如何解决这个错误?
我在 VMware 上使用 Ubuntu 14.04.2 (amd64)。我也尝试过 Ubuntu i386,但结果是一样的。
kos*_*kos 123
您正在尝试在 x86-64 体系结构上运行为 ARM 体系结构编译的可执行文件,这很像要求只会说英语的处理器用中文指导。
如果您需要运行该可执行文件,您有两种选择:
获取 x86-64 版本的可执行文件(无论如何;如果您无法获取 x86-64 版本的可执行文件,但可以获取其源代码,则可以尝试在虚拟机上重新编译它);
安装Ubuntu Server for ARM代替 Ubuntu 14.04.2 (amd64)。这需要在 ARM 架构上运行的物理机或可以模拟它的虚拟化软件。
小智 24
如果您尝试在 32 位平台上运行 x86-64 可执行文件,也会发生这种情况。
在一个特定的例子中,我下载了 Visual Studio Code 并尝试在我的 Ubuntu 安装上运行它,但我没有意识到我在这个 VM 中安装了 32 位 Ubuntu。我收到此错误,但下载 32 位版本后,它运行没有问题。
Nat*_*man 13
如果安装binfmt-support,通常可以在 amd64 系统上运行 ARM 可执行映像, qem
, 和qemu-user-static
包:
sudo apt install binfmt-support qemu qemu-user-static
Run Code Online (Sandbox Code Playgroud)
qemu
然后将在您运行可执行文件时执行系统调用仿真。这适用于大多数 ARM 二进制文件,但有一些可能无法正确运行。
如果以下所有条件都为真,则可能会发生此类错误:
如果你有那个文件,比方说,在存档中 - 尝试将它解压到 VM 内,在虚拟驱动器内的某个目录中,而不是映射到主机硬盘驱动器的文件夹,例如 /myNewDir/