是否可以在 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 支援。

相關內容