Wie zu beheben 'kann keine Binärdatei ausführen: Exec Format Fehler' auf Ubuntu
Während es bei der Verwendung der offiziellen apt-get-Repositories nicht passieren sollte, wenn Sie Software aus dem Internet herunterladen und ausführen, besteht die Möglichkeit, dass Sie die gefürchtete bash sehen: ./nameOfProgram: kann keine Binärdatei ausführen: Exec format error . Dieser Fehler, dem normalerweise bash folgt : ./nameOfProgram.sh: Berechtigung verweigert oder ähnliches, weist darauf hin, dass Ubuntu nicht in der Lage war, korrekt mit der heruntergeladenen Binärdatei zu interagieren. Das liegt daran, dass es sich zwar um eine gültige Linux-Binärdatei handelt, aber für einen anderen Chipsatz entwickelt wurde, als Ihr Kernel derzeit unterstützt.
Die meisten Leute, die Ubuntu verwenden, sind auf 32-Bit- oder 64-Bit-Prozessoren basierend auf einer Standardarchitektur, die Intel veröffentlicht hat, unabhängig davon, wer tatsächlich ihre Mikrochips gemacht hat. Beachten Sie, dass 64-Bit-Prozessoren im 32-Bit-Modus ausgeführt werden können. Wenn Sie diesen Fehler erhalten, obwohl Sie einen 64-Bit-Prozessor haben, besteht die Möglichkeit, dass Sie eine 32-Bit-Version von Ubuntu verwenden. Mit ein paar einfachen Befehlen können Sie feststellen, wie Ihr Chip arbeitet.
Methode 1: Verwenden des Befehls arch
Wenn Sie mit dem Typ des Mikroprozessors, den Sie auf Ihrem Computer installiert haben, nicht vertraut sind, sollten Sie zuerst den Befehl arch von der Befehlszeile aus verwenden. Nach dem Ausführen dieses Befehls wird nur eine einzige Ausgabezeile angezeigt. In vielen Fällen wird i686 angezeigt, was bedeutet, dass Sie sich auf einem 32-Bit-Prozessor befinden und daher x86_64-Binärdateien nicht ausführen können. Wenn Sie stattdessen amd64 oder etwas Ähnliches sehen, befinden Sie sich auf einem x86_64-Prozessor und sollten zumindest theoretisch in der Lage sein, die meisten 32-Bit- und 64-Bit-Binärdateien auszuführen. Im Gegensatz zu Microsoft Windows enthält Ubuntu Linux die richtigen Tools, um Benutzern von 644-Bit-Chipsätzen zu ermöglichen, in ihrem Betriebssystem auch 16-Bit-Windows-Programme in ihrem Betriebssystem auszuführen.
Diese Begriffe sind immer noch gültig, auch wenn Sie nicht gerade dieses spezielle Modell des Mikrochips verwenden. Zum Beispiel, i686 ist, wie Linux bezieht sich auf viele 32-Bit-Prozessoren, auch wenn sie nicht Intel 80686 Chips sind. Selbst wenn Sie 64-Bit-Intel-Technologie verwenden, nennt arch Ihren Prozessor möglicherweise immer noch einen AMD64-Chip. Dies zeigt keinen Fehler an und kann problemlos ignoriert werden. Sie können cat / proc / cpuinfo oder mehr / proc / cpuinfo verwenden, um den genauen Prozessortyp zu ermitteln, den Sie verwenden. Da die Zeilen in dieser Datei lang sind, sollten Sie F11 vor dem Ausgeben drücken, wenn Sie ein grafisches Terminalfenster verwenden. Benutzer einer virtuellen Konsole, insbesondere solche, die mit Ubuntu Server arbeiten, müssen sich nicht so viele Sorgen machen.
Möglicherweise sehen Sie andere Arten von Ausgaben, die Ihre Optionen beim Ausführen von Software weiter einschränken können. Ubuntu unterstützte die PowerPC-Architektur am längsten, was auf einigen Workstations sowie auf vielen klassischen Macintosh- und älteren OS X-Macintosh-Rechnern zu finden ist. Sie können tatsächlich noch Ubuntu-Repositories für diese Architekturen finden, obwohl sie heute wenig Unterstützung erhalten. Es ist jedoch höchstwahrscheinlich nicht möglich, viele Linux-Binärdateien auszuführen, die Sie in diesem Fall außerhalb des offiziellen Repositorys aus dem Internet herunterladen. Das bedeutet nicht, dass Ubuntu auf diesen Rechnern nicht funktioniert, obwohl Sie sich vielleicht die leichtere Lubuntu-Distribution ansehen wollen.
PRO TIPP: Wenn das Problem bei Ihrem Computer oder Laptop / Notebook auftritt, sollten Sie versuchen, die Reimage Plus Software zu verwenden, die die Repositories durchsuchen und beschädigte und fehlende Dateien ersetzen kann. Dies funktioniert in den meisten Fällen, in denen das Problem aufgrund einer Systembeschädigung auftritt. Sie können Reimage Plus herunterladen, indem Sie hier klickenMethode 2: Verwenden der Datei Befehl
Der Dateibefehl gibt an, welche verschiedenen Dateien enthalten sind, und er ist normalerweise sehr genau. Versuchen Sie, die fragliche Datei zu identifizieren, indem Sie DateinameOfProgram eingeben, um zu sehen, ob Sie ELF 32-Bit oder ELF 64-Bit als Ausgabe erhalten. Wenn es Ihnen mitteilt, dass es sich um eine ELF 64-Bit-Binärdatei handelt und Sie als Ausgabe vom Befehl arching i686 erhalten haben, können Sie es vernünftigerweise nicht auf Ihrem Rechner ausführen. Wenn Sie auf einem 64-Bit-Mikroprozessor mit 32-Bit-Ubuntu arbeiten, können Sie das Betriebssystem technisch neu installieren, obwohl dies ein extremer Schritt ist, um ein einzelnes Programm auszuführen.
Es gibt auch die sehr reale Möglichkeit, wie klein auch immer, dass Sie stattdessen auf eine Binärdatei stoßen, die, wenn Sie versuchen, es auszuführen, Junk-Zeichen an das Terminal spuckt, selbst wenn Sie einen Malware-Scan darauf ausgeführt haben. Diese Zeichen haben normalerweise die Form von entweder rautenförmigen Blöcken oder alternativ rechteckigen Würfeln, die numerische Werte enthalten. Einige Computerwissenschaftler nennen letzteres Tofu und repräsentieren die Unicode-Werte von Zeichen, die Ihre aktuell installierten Schriftarten nicht anzeigen können. Wenn das Terminal sie so anzeigt, können Sie sicher sein, dass es sich weder um einen Fontfehler noch um irgendwas mit Malware handelt. Das liegt einfach daran, dass der kompilierte Mikroprozessor-Opcode in der Binärdatei Ihrem System so fremd ist, dass er nicht in der Lage ist, einen Teil des Codes zu interpretieren.
Der beste Weg, dies zu beheben, ist das richtige Paket für Ihre Architektur zu installieren. Wenn Sie Pakete von Ubuntu aus installieren, sind Sie mit dem apt-get-System oder dem grafischen Synaptic-Manager problemlos zu erreichen. Wenn Sie Pakete von einer anderen Distribution herunterladen, müssen Sie die richtige für Ihre Architektur finden. Nehmen Sie zum Beispiel die Linux-Liste des gvim-Pakets von Arch Linux. Während das Standardpaket die x86_64-Architektur enthält, gibt es auch eine für den i686-Chipsatz. Dieser wird auf 32-Bit-Rechnern funktionieren, die mit der Intel-Interrupt-Struktur arbeiten, aber bedenken Sie, dass die Begriffe i686 und 32-Bit die ganze Zeit nicht gegenseitig einschließen, da andere von Linux unterstützte Chipsätze tatsächlich ihre eigenen 32-Bit-Implementierungen haben.
Benutzer, die die gesamte GNU / Linux-Szene erkunden, könnten auf Binärdateien stoßen, die für weit exotischere Technologien als diese kompiliert wurden. Linux ist eine plattformübergreifende Codeszene, daher werden OpenRISC-, MIPS-, SPARC-, M32R-, MN103-, ARM-, ARC-, Alpha- und viele andere Standard-Binärdateien kompiliert. Mehr als wahrscheinlich, werden Sie nicht in der Lage sein, irgendwelche von ihnen zu laufen, obwohl ARM eine extrem populäre Tabletten- und smartphoneplattform ist. Es ist auch die Plattform, auf der der Raspberry Pi basiert, was bedeutet, dass, wenn Sie tatsächlich Ubuntu auf einem mobilen Gerät oder die Ubuntu MATE Distribution für Raspberry Pi ausführen, Sie diese anstelle von Intel 32-Bit oder x86_64 Binärdateien benötigen.
PRO TIPP: Wenn das Problem bei Ihrem Computer oder Laptop / Notebook auftritt, sollten Sie versuchen, die Reimage Plus Software zu verwenden, die die Repositories durchsuchen und beschädigte und fehlende Dateien ersetzen kann. Dies funktioniert in den meisten Fällen, in denen das Problem aufgrund einer Systembeschädigung auftritt. Sie können Reimage Plus herunterladen, indem Sie hier klicken