bash: ./program: Kann Binärdatei nicht ausführen: Exec-Format-Fehler

Ich versuche, ein Programm auszuführen, aber es tritt ein Fehler wie dieser auf:

bash: ./program: cannot execute binary file: Exec format error

Das Ergebnis von file program war:

program: ELF-32-bit LSB executable, ARM, EABI4 version 1 (SYSV), dynamically linked(uses share libs), for GNU/LINUX 2.6.16, not stripped

Wie kann ich diesen Fehler beheben?

Ich benutze Ubuntu 14.04.2 (amd64) mit VMware. Ich habe auch versucht, mit Ubuntu i386, aber das Ergebnis war das gleiche.

Sie versuchen, eine für eine ARM-Architektur kompilierte ausführbare Datei auf einer x86-64-Architektur auszuführen, was in etwa so ist, als würden Sie Ihren Prozessor, der nur Englisch spricht, bitten, Anweisungen auf Chinesisch zu befolgen.

Wenn Sie diese ausführbare Datei ausführen müssen, haben Sie zwei Möglichkeiten:

  1. Besorgen Sie sich eine x86-64-Version der ausführbaren Datei (mit allen Mitteln; wenn Sie keine x86-64-Version der ausführbaren Datei erhalten können, aber den Quellcode, können Sie versuchen, sie auf der virtuellen Maschine neu zu kompilieren);

  2. Installieren Sie Ubuntu Server für ARM anstelle von Ubuntu 14.04.2 (amd64). Dies erfordert entweder eine physische Maschine mit ARM-Architektur oder eine Virtualisierungssoftware, die diese emulieren kann.

Kommentare (0)

Dies kann auch auftreten, wenn Sie versuchen, eine x86-64-Datei auf einer 32-Bit-Plattform auszuführen.

In einem konkreten Fall habe ich Visual Studio Code heruntergeladen und versucht, es auf meiner Ubuntu-Installation auszuführen, aber ich hatte nicht bemerkt, dass ich 32-Bit-Ubuntu in dieser VM installiert hatte. Ich bekam diese Fehlermeldung, aber nachdem ich die 32-Bit-Version heruntergeladen hatte, lief sie ohne Probleme.

Kommentare (0)

Ein solcher Fehler kann auftreten, wenn alle der folgenden Punkte zutreffen:

  • Die ausführbare Datei ist keine Datei, sondern ein Link
  • Sie führen sie innerhalb einer VM aus
  • Die Datei befindet sich in einem gemeinsamen Ordner
  • Ihr Host ist Windows.

Wenn Sie die Datei, sagen wir, in einem Archiv erhalten haben, versuchen Sie, sie innerhalb der VM zu entpacken, und zwar in ein Verzeichnis innerhalb des virtuellen Laufwerks, nicht in einen Ordner, der der Festplatte Ihres Host-Rechners zugeordnet ist, z. B. /myNewDir/.

Kommentare (1)