So lösen Sie: -bash:: Binärdatei kann nicht ausgeführt werden

18

Ich habe eine Datei mit dem Namen b1, die Assemblersprache enthält. Ich versuche die Datei unter OSX mit auszuführen

$ ./b1

Ich erhalte folgenden Fehler:

-bash: ./b1: cannot execute binary file

Ich habe andere ähnliche Fragen angeschaut, aber ohne Erfolg. Ich benutze definitiv eine 64-Bit-Architektur.

Hier werden relevante Informationen ausgegeben:

$ file b1
b1: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, not stripped
$ uname -a
Darwin Anthonys-MacBook-Pro.local 13.0.0 Darwin Kernel Version 13.0.0: Thu Sep 19 22:22:27 PDT 2013; root:xnu-2422.1.72~6/RELEASE_X86_64 x86_64

Bearbeiten:

Ran as b1endete mit: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/as: fatal error in /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../libexec/as/x86_64/as

user304868
quelle

Antworten:

25

Entschuldigung, diese Datei ist für GNU / Linux

Entsprechend Ihrer fileAusgabe ist dieses Programm für GNU / Linux. Ich weiß das, weil:

  1. Die Datei b1hat das ELFFormat (erweiterbar und verknüpfbar) , während Mac OS X das Mach-OFormat für Binärdateien verwendet.
  2. fileerkennt, dass diese Datei für ist GNU/Linux 2.6.18, was bedeutet, dass sie auf den meisten modernen Linux-Distributionen funktioniert.

Um Ihr Problem zu lösen, müssen Sie dieses Problem entweder in einer Linux-Distribution ausführen, das Programm neu kompilieren oder die Mac OS X-Version dieses Programms herunterladen.

Also ... Warum funktioniert es nicht b1mit XYZ OS oder CPU?

So wie Menschen verschiedene Sprachen sprechen, verstehen verschiedene Computer unterschiedliche Anweisungen. Beispielsweise verwendet Ihr Mac einen Intel-Prozessor, während Ihr Android-Telefon einen ARM-Prozessor verwendet. Vergleichen Sie diese beiden Prozessoren mit Englisch und Französisch. Sie können derselben Sprachfamilie angehören, aber Sie können nicht beide gleichzeitig sprechen. Dies führt zu einer Schlussfolgerung:

Unterschiedliche Computer "sprechen" in verschiedenen Sprachen.

Beachten Sie Folgendes, wenn verschiedene Betriebssysteme (wie Windows, Mac OS X und Linux) nicht dieselben Binärdateien verwenden können:

Was unterscheidet Software objektiv von Hardware? Nicht viel.

Beide stellen ein System und eine "Sprache" bereit, mit denen komplexere Komponenten des Computers Aufgaben für den Endbenutzer ausführen können. Beide erfordern eine vereinbarte Sprache, um die Arbeit zu erledigen. Stellen Sie sich vor, es wären 10 Personen in einem Schreikrieg, die jeweils eine andere Sprache sprechen. Aus diesem Grund benötigen unterschiedliche Betriebssystemsoftware unterschiedliche Binärdateien, auch wenn beide Betriebssysteme denselben Prozessor verwenden.

Winny
quelle
Hallo, ich habe ein ähnliches Problem beim Kompilieren der Elf-Datei unter Mac OS 10.9. Könnten Sie mir bitte sagen, wie man das auf Mac
ausführt
AllsWell du hast einen Weg dafür gefunden !?
Neocortex
1

Assemblersprache? Sie müssen es kompilieren oder vielmehr zusammenbauen.

man as
Emery Lapinski
quelle
2
Der Fragesteller scheint Assemblersprache und Maschinencode in Konflikt gebracht zu haben . Siehe die Ausgabe von filein der Frage.
JdeBP