Entschuldigung, diese Datei ist für GNU/Linux

Entschuldigung, diese Datei ist für GNU/Linux

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

$ ./b1

Ich erhalte die folgende Fehlermeldung:

-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 Ausgaben der relevanten 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:

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

Antwort1

Entschuldigung, diese Datei ist für GNU/Linux

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

  1. Die Datei b1befindet sich imELF(Erweiterbares und verknüpfbares Format)Format, 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 es entweder innerhalb einer Linux-Distribution ausführen, das Programm neu kompilieren oder die Mac OS X-Version dieses Programms herunterladen.

Also... Warum funktioniert nicht b1aufXYZBetriebssystem oder CPU?

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

Unterschiedliche Computer „sprechen“ verschiedene Sprachen.

Bedenken 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 ihre Arbeit zu erledigen. Stellen Sie sich vor, es würden sich 10 Leute anschreien, von denen jeder eine andere Sprache spricht. Aus diesem Grund benötigen unterschiedliche Betriebssystemsoftware unterschiedliche Binärdateien, selbst wenn beide Betriebssysteme denselben Prozessor verwenden.

Antwort2

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

man as

verwandte Informationen