是否可以在 ARM 上运行 x86 可执行文件?

是否可以在 ARM 上运行 x86 可执行文件?

我正在尝试将 Navicat(一个 x86-64 二进制文件)安装到我的 aarch64 机器上,这会导致“无法执行二进制文件:Exec 格式错误”

file这是可执行文件的运行结果:

navicatess15-sqlserver-en.AppImage: 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.18, BuildID[sha1]=d629f6099d2344ad82818172add1d38c5e11bc6d, stripped

这是我的uname -a

Linux penguin 4.19.98-08076-g24ab33fb8e14 #1 SMP PREEMPT Wed Apr 1 17:17:36 PDT 2020 aarch64 GNU/Linux

有什么方法可以在我的机器上运行这个可执行文件吗?

(我不知道这是否有什么区别,但我在带有 OP1 处理器的 Samsung Chromebook Plus 上运行 Linux)

答案1

每个架构都使用自己的硬件语言,因此 ARM CPU 当然只能本地运行 ARM 二进制文件。如果您想为另一个架构运行二进制文件,您需要使用模拟器。最著名的 x86-64 模拟器是盖姆博克斯

但仿真速度非常慢,因此不适合时间敏感的应用程序,应该是最后的手段。如果可用的话,您最好从源代码重新编译,或者找到 ARM 替代软件

答案2

Debian 有多架构支持这意味着您可以在其他体系结构上安装和运行为一种体系结构构建的程序。

然而,您需要考虑以下因素:

  1. 由于 x86 架构与 ARM 有很大不同,因此这将通过仿真(通常通过qemu-user)来完成,因此可能会损失一些速度和功能。

  2. 这需要binfmt支持。如果您在 Chromebook 上使用“Linux 容器”(crostinit),则如中所述这个帖子,未启用此支持。

  3. 在 Chromebook 上,此时binfmt需要支持。crouton有用以及在这方面可以预期的。

如果您想测试此运行以下命令:

A。安装支持该架构所需的二进制文件。

sudo apt-get install binfmt-support qemu-user-static
sudo update-binfmts --display

b.设置 Debian 以支持多架构。

sudo dpkg --add-architecture amd64
sudo apt-get update
sudo apt-get upgrade

C。测试一下。 (假设你不已经hello为该aarch64架构安装了软件包。)

sudo apt-get install hello:amd64
hello

这将打印熟悉的“Hello, World!”使用amd64二进制消息。

答案3

对于 aarch64,项目如下菲克斯或者盒子64比 QEMU 用户模拟具有更好的性能。它们使用动态重新编译,通常还为 Win32 x86/x86_64 软件提供 WINE 支持。

相关内容