Behebung von “Binärdatei kann nicht ausgeführt werden: Formatfehler ausführen” unter Ubuntu

Wenn Sie die offiziellen apt-get-Repositorys verwenden, sollte dies nicht passieren. Wenn Sie jedoch Software aus dem Internet herunterladen und ausführen, besteht die Möglichkeit, dass Sie die gefürchteten sehen bash: ./nameOfProgram: Binärdatei kann nicht ausgeführt werden: Formatfehler ausführen. Dieser Fehler, auf den normalerweise folgt bash: ./nameOfProgram.sh: Berechtigung verweigert oder so etwas zeigt an, dass Ubuntu nicht in der Lage war, eine korrekte Schnittstelle mit der von Ihnen heruntergeladenen Binärdatei herzustellen. Dies liegt daran, dass es sich anscheinend um eine gültige Linux-Binärdatei handelt, diese jedoch für einen anderen Chipsatz entwickelt wurde, als Ihr Kernel derzeit unterstützt.

Die meisten Benutzer von Ubuntu arbeiten mit 32-Bit- oder 64-Bit-Prozessoren, die auf einer von Intel veröffentlichten Standardarchitektur basieren, unabhängig davon, wer ihre Mikrochips tatsächlich hergestellt hat. Es ist wichtig zu wissen, dass 64-Bit-Prozessoren im 32-Bit-Modus ausgeführt werden können. Wenn Sie also diesen Fehler erhalten, obwohl Sie einen 64-Bit-Prozessor haben, besteht die Möglichkeit, dass Sie eine 32-Bit-Version von Ubuntu ausführen. Ein paar einfache Befehle reichen aus, um festzustellen, wie Ihr Chip funktioniert.

Methode 1: Verwenden des Befehls arch

Wenn Sie mit dem auf Ihrem Computer installierten Mikroprozessortyp nicht vertraut sind, sollten Sie zuerst den Befehl arch über die Befehlszeile verwenden. Nach dem Ausführen dieses Befehls wird nur eine einzige Ausgabezeile angezeigt. In vielen Fällen wird i686 angezeigt. Dies bedeutet, dass Sie sich auf einem 32-Bit-Prozessor befinden und daher keine x86_64-Binärdateien ausführen können. Wenn Sie stattdessen amd64 oder ä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 tatsächlich die richtigen Tools, mit denen Benutzer von 644-Bit-Chipsätzen in vielen Fällen auch 16-Bit-Windows-Programme in ihrem Betriebssystem ausführen können.

Diese Begriffe gelten auch dann, wenn Sie dieses spezielle Mikrochip-Modell nicht verwenden. Mit i686 bezieht sich Linux beispielsweise auf viele 32-Bit-Prozessoren, auch wenn es sich nicht um Intel 80686-Chips handelt. Selbst wenn Sie die 64-Bit-Intel-Technologie verwenden, nennt arch Ihren Prozessor möglicherweise immer noch einen amd64-Chip. Dies weist nicht auf einen Fehler hin und kann ignoriert werden. Sie können Katze verwenden / proc / cpuinfo oder mehr / proc / cpuinfo um herauszufinden, welchen genauen Prozessortyp Sie verwenden. Da die Zeilen in dieser Datei lang sind, möchten Sie möglicherweise F11 drücken, bevor Sie sie ausgeben, wenn Sie ein grafisches Terminalfenster verwenden. Benutzer einer virtuellen Konsole, insbesondere diejenigen, die mit Ubuntu-Servern arbeiten, müssen sich nicht so viele Sorgen machen.

Möglicherweise werden einige andere Arten von Ausgaben angezeigt, die Ihre Optionen beim Ausführen von Software weiter einschränken können. Ubuntu unterstützte die PowerPC-Architektur am längsten, die auf einigen Workstations sowie auf vielen Classic Macintosh- und älteren OS X Macintosh-Computern zu finden ist. Sie können tatsächlich immer noch Ubuntu-Repositorys für diese Architekturen finden, obwohl sie heute nur wenig Unterstützung erhalten. In diesem Fall werden Sie jedoch höchstwahrscheinlich nicht in der Lage sein, viele Linux-Binärdateien, die Sie aus dem Internet heruntergeladen haben, außerhalb der offiziellen Repositorys auszuführen. Das bedeutet nicht, dass Ubuntu auf diesen Computern nicht funktioniert, obwohl Sie sich vielleicht die leichtere Lubuntu-Distribution ansehen möchten.

Methode 2: Verwenden des Dateibefehls

Der Befehl file gibt an, was verschiedene Dateien enthalten, und ist normalerweise sehr genau. Versuchen Sie, die betreffende Datei durch Eingabe der Datei zu identifizieren nameOfProgram um zu sehen, ob Sie ELF 32-Bit oder ELF 64-Bit als Ausgabe erhalten. Wenn es Ihnen sagt, dass es sich um eine ELF-64-Bit-Binärdatei handelt und Sie i686 als Ausgabe vom Befehl arch erhalten haben, können Sie es auf Ihrem Computer auf keinen Fall vernünftig ausführen. Wenn Sie auf einem 64-Bit-Mikroprozessor mit 32-Bit-Ubuntu arbeiten, können Sie das Betriebssystem technisch neu installieren. Dies ist jedoch ein extremer Schritt, um ein einzelnes Programm auszuführen.

Es besteht auch die sehr reale Möglichkeit, wie gering sie auch sein mag, dass Sie stattdessen auf eine Binärdatei stoßen, die beim Versuch, sie auszuführen, Junk-Zeichen an das Terminal ausspuckt, selbst wenn Sie einen Malware-Scan darauf ausgeführt haben. Diese Zeichen haben normalerweise die Form von rautenförmigen Blöcken oder alternativ rechteckigen Würfeln mit numerischen Werten. Einige Informatiker nennen den letzteren Tofu und stellen die Unicode-Werte von Zeichen dar, die Ihre derzeit installierten Schriften nicht anzeigen können. Wenn das Terminal sie so anzeigt, können Sie sicher sein, dass dies weder ein Schriftfehler noch etwas mit Malware zu tun hat. Dies liegt einfach daran, dass der kompilierte Mikroprozessor-Opcode innerhalb der Binärdatei Ihrem System so fremd ist, dass es nicht weiß, wie ein Teil des Codes zu interpretieren ist.

Der beste Weg, dies zu beheben, besteht darin, das richtige Paket für Ihre Architektur zu installieren. Wenn Sie Pakete in Ubuntu installieren, haben Sie das apt-get-System oder den grafischen Synaptic-Manager problemlos abgedeckt. Wenn Sie Pakete von einer anderen Distribution herunterladen, müssen Sie das richtige für Ihre Architektur finden. Nehmen Sie zum Beispiel die Auflistung des gvim-Pakets durch Arch Linux. Während das Standardpaket die x86_64-Architektur enthält, gibt es auch eine für den i686-Chipsatz. Dieser funktioniert auf 32-Bit-Computern, die mit der Intel-Interrupt-Struktur arbeiten. Beachten Sie jedoch, dass sich die Begriffe i686 und 32-Bit nicht immer gegenseitig einschließen, da andere von Linux unterstützte Chipsätze tatsächlich über eigene 32-Bit-Implementierungen verfügen.

Benutzer, die die gesamte GNU / Linux-Szene erkunden, stoßen möglicherweise auf Binärdateien, die für weitaus exotischere Technologien als diese kompiliert wurden. Linux ist wirklich eine plattformübergreifende Codeszene. Sie werden also sehen, dass OpenRISC, MIPS, SPARC, M32R, MN103, ARM, ARC, Alpha und viele andere Standard-Binärdateien für die Arbeit kompiliert wurden. Höchstwahrscheinlich können Sie keines davon ausführen, obwohl ARM eine äußerst beliebte Tablet- und Smartphone-Plattform ist. Es ist auch die Plattform, auf der der Raspberry Pi basiert. Wenn Sie also Ubuntu tatsächlich auf einem mobilen Gerät oder der Ubuntu MATE-Distribution für Raspberry Pi ausführen, benötigen Sie diese anstelle von Intel 32-Bit- oder x86_64-Binärdateien.

Similar Posts

Leave a Reply

Your email address will not be published.