Come risolvere: -bash:: impossibile eseguire il file binario


18

Ho un file chiamato b1 che contiene il linguaggio assembly. Sto cercando di eseguire il file su OSX utilizzando

$ ./b1

Ottengo il seguente errore:

-bash: ./b1: cannot execute binary file

Ho esaminato altre domande simili, ma senza risultati. Sto sicuramente usando un'architettura a 64 bit.

Ecco l'output delle informazioni pertinenti:

$ 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

Modificare:

Ran as b1che ha finito per terminare con: /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

Risposte:


25

Siamo spiacenti, questo file è per GNU / Linux

Secondo il tuo fileoutput, questo programma è per GNU / Linux. Lo so perché:

  1. Il file b1è nel formato ELF(formato estensibile e collegabile) , mentre Mac OS X utilizza il Mach-Oformato per i binari;
  2. filericonosce che questo file è per GNU/Linux 2.6.18, il che significa che funzionerà sulla maggior parte delle moderne distribuzioni Linux.

Per risolvere il problema, è necessario eseguire questo problema all'interno di una distribuzione Linux, ricompilare il programma o ottenere la versione per Mac OS X di questo programma.

Quindi ... Perché non b1funziona su XYZ OS o CPU?

Proprio come le persone parlano lingue diverse, computer diversi comprendono istruzioni diverse. Ad esempio, il tuo Mac utilizza un processore Intel, mentre il tuo telefono Android utilizza un processore ARM. Confronta questi due processori con inglese e francese. Potrebbero appartenere alla stessa famiglia linguistica, ma non puoi parlare entrambi contemporaneamente. Questo porta a una conclusione:

I computer diversi "parlano" in lingue diverse.

Per quanto riguarda il motivo per cui diversi sistemi operativi (come Windows, Mac OS X e Linux) non possono utilizzare gli stessi binari, considerare questo:

Cosa rende il software oggettivamente diverso dall'hardware? Non tanto.

Entrambi forniscono un sistema e un "linguaggio" che consente a componenti più complessi del computer di completare le attività per l'utente finale. Entrambi richiedono una lingua concordata per portare a termine il lavoro. Immagina se ci fossero 10 persone in una partita urlante, ognuna che parlava una lingua diversa. Questo è il motivo per cui diversi software OS richiedono binari diversi, anche se entrambi i sistemi operativi utilizzano lo stesso processore.


Ciao, ho un problema simile nel tentativo di compilare il file elf in Mac OS 10.9. Potresti dirmi come eseguire questo onmac
AllIsWell,

Tutto bene, hai trovato un modo per farlo !?
Neocortex,

1

linguaggio assembly? Devi compilarlo, o piuttosto assemblarlo.

man as

2
L'interrogatore sembra avere un linguaggio assembly e un codice macchina combinati . Vedi l'output di filenella domanda.
JdeBP
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.