
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 file
der 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:
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.Dies muss
binfmt
unterstützt werden. Wenn Sie „Linux-Container“ (Crostinit) auf einem Chromebook verwenden, dann, wie indieser Beitragist diese Unterstützung nicht aktiviert.Auf einem Chromebook ist an dieser Stelle
binfmt
Unterstützung erforderlich .crouton
Es 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 hello
Paket für die aarch64
Architektur installiert sein.)
sudo apt-get install hello:amd64
hello
Dadurch wird die bekannte Meldung „Hallo Welt!“ mithilfe der amd64
Binärdatei gedruckt.