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

Ich habe eine Datei namens b1, die Assemblersprache enthält. Ich versuche, die Datei unter OSX mit

$ ./b1

Ich erhalte den folgenden Fehler:

-bash: ./b1: cannot execute binary file

Ich habe mir andere ähnliche Fragen angesehen, aber ohne Erfolg. Ich verwende definitiv eine 64-Bit-Architektur.

Hier sind die Ausgabe relevanter Informationen:

$ 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:

Lief 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

Author: user304868, 2014-03-04

2 answers

Sorry, 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 befindet sich in der ELF (Erweiterbares und verknüpfbares Format) Format, während Mac OS X das Mach-O Format 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 einem Linux ausführen distribution, kompilieren Sie das Programm neu, oder holen Sie sich die Mac OS X-Version dieses Programms.

So... Warum funktioniert b1 nicht auf XYZ OS oder CPU?

So wie Menschen verschiedene Sprachen sprechen, verstehen verschiedene Computer unterschiedliche Anweisungen. Zum Beispiel verwendet Ihr Mac einen Intel-Prozessor, während Ihr Android-Handy einen ARM-Prozessor verwendet. Vergleichen Sie diese beiden Prozessoren mit Englisch und Französisch. Sie können zur gleichen Sprachfamilie gehören, aber immer noch, Sie können nicht beide gleichzeitig sprechen Zeit. Dies führt zu einer Schlussfolgerung:

Unähnliche Computer "reden" in verschiedenen Zungen.

Betrachten Sie Folgendes, warum 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 bieten ein System und eine "Sprache", die es komplexeren Komponenten des Computers ermöglicht, Aufgaben für den Endbenutzer zu erledigen. Beide erfordern eine vereinbarte Sprache, um Arbeit zu erledigen. Stellen Sie sich vor, es gäbe 10 Personen in einem Schreispiel, Jeder spricht eine andere Sprache. Aus diesem Grund benötigen unterschiedliche Betriebssystemsoftware unterschiedliche Binärdateien, auch wenn beide Betriebssysteme denselben Prozessor verwenden.

 26
Author: Winny,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2014-03-04 07:35:15

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

man as
 1
Author: Emery Lapinski,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2014-03-04 07:04:30