Ist es möglich, eine x86-ausführbare Datei auf ARM auszuführen?

Ist es möglich, eine x86-ausführbare Datei auf ARM auszuführen?

Ich versuche, Navicat, eine x86-64-Binärdatei, auf meinem aarch64-Rechner zu installieren, was zu der Meldung „Binärdatei kann nicht ausgeführt werden: Exec-Formatfehler“ führt.

Hier ist das Ergebnis der Ausführung fileder ausführbaren Datei:

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

Und hier ist meins uname -a:

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

Gibt es eine Möglichkeit, diese ausführbare Datei auf meinem Computer auszuführen?

(Ich weiß nicht, ob das einen Unterschied macht, aber ich verwende Linux auf meinem Samsung Chromebook Plus mit einem OP1-Prozessor.)

Antwort1

Jede Architektur spricht ihre eigene Hardwaresprache, daher können ARM-CPUs natürlich nur ARM-Binärdateien nativ ausführen. Wenn Sie Binärdateien für eine andere Architektur ausführen möchten, müssen Sie einenEmulatorDie bekanntesten x86-64-Emulatoren sindqemuUndbochs

Die Emulation ist jedoch extrem langsam, sodass sie für zeitkritische Anwendungen nicht geeignet ist und nur als letztes Mittel eingesetzt werden sollte. Sie sollten besser aus dem Quellcode neu kompilieren, falls verfügbar, oder eine alternative ARM-Software finden.

Antwort2

Debian hatMultiarch-UnterstützungDas bedeutet, dass Sie für eine Architektur erstellte Programme auf anderen Architekturen installieren und ausführen können.

Jedochmüssen Sie Folgendes berücksichtigen:

  1. Da sich die x86-Architektur stark von ARM unterscheidet, erfolgt dies durch Emulation (normalerweise über qemu-user), sodass es zu Geschwindigkeits- und Funktionseinbußen kommen kann.

  2. Dies muss binfmtunterstützt werden. Wenn Sie „Linux-Container“ (Crostinit) auf einem Chromebook verwenden, dann, wie indieser Beitragist diese Unterstützung nicht aktiviert.

  3. Auf einem Chromebook ist an dieser Stelle binfmtUnterstützung erforderlich .croutonEs klapptso gut wie in diesem Zusammenhang erwartet werden kann.

Wenn Sie dies testen möchten, führen Sie Folgendes aus:

a. Installieren Sie die zur Unterstützung der Architektur erforderlichen Binärdateien.

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

b. Richten Sie Debian so ein, dass Multiarch unterstützt wird.

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

c. Testen Sie es. (Vorausgesetzt, Siebereitsmuss das helloPaket für die aarch64Architektur installiert sein.)

sudo apt-get install hello:amd64
hello

Dadurch wird die bekannte Meldung „Hallo Welt!“ mithilfe der amd64Binärdatei gedruckt.

Antwort3

Für aarch64, Projekte wieFEXoderBox64haben eine bessere Leistung als die QEMU-Benutzeremulation. Sie verwenden dynamische Neukompilierung und bieten normalerweise auch WINE-Unterstützung für Win32 x86/x86_64-Software.

verwandte Informationen