it-swarm.com.de

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

Ich habe eine Datei mit dem Namen b1, die 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 b1 was endete 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

17
user304868

Entschuldigung, diese Datei ist für GNU/Linux

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

  1. Die Datei b1 hat das Format ELF (erweiterbares und verknüpfbares Format) , während Mac OS X das Format Mach-O für Binärdateien verwendet.
  2. file erkennt, dass diese Datei für GNU/Linux 2.6.18 ist, 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 b1 nicht auf XYZ Betriebssystemen oder CPUs?

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.

21
Winny

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

man as
1
Emery Lapinski