Cómo resolver: -bash:: no se puede ejecutar el archivo binario

18

Tengo un archivo llamado b1 que contiene lenguaje ensamblador. Estoy tratando de ejecutar el archivo en OSX usando

$ ./b1

Obtuve el siguiente error:

-bash: ./b1: cannot execute binary file

He visto otras preguntas similares, pero fue en vano. Definitivamente estoy usando una arquitectura de 64 bits.

Aquí están los resultados de la información relevante:

$ 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

Editar:

Ran as b1que terminó terminando 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

usuario304868
fuente

Respuestas:

25

Lo sentimos, este archivo es para GNU / Linux

Según su fileresultado, este programa es para GNU / Linux. Lo sé porque:

  1. El archivo b1está en ELFformato (Formato extensible y enlazable) , mientras que Mac OS X usa el Mach-Oformato para binarios;
  2. filereconoce que este archivo es para GNU/Linux 2.6.18, lo que significa que funcionará en la mayoría de las distribuciones modernas de Linux.

Para resolver su problema, debe ejecutar este problema dentro de una distribución de Linux, volver a compilar el programa u obtener la versión para Mac OS X de este programa.

Entonces ... ¿Por qué no b1funciona en XYZ OS o CPU?

Así como las personas hablan diferentes idiomas, diferentes computadoras entienden diferentes instrucciones. Por ejemplo, su Mac usa un procesador Intel, mientras que su teléfono Android usa un procesador ARM. Compare estos dos procesadores con inglés y francés. Pueden pertenecer a la misma familia de idiomas, pero aún así, no puedes hablar ambos al mismo tiempo. Esto lleva a una conclusión:

Las computadoras diferentes "hablan" en diferentes lenguas.

En cuanto a por qué diferentes sistemas operativos (como Windows, Mac OS X y Linux) no pueden usar los mismos binarios, considere esto:

¿Qué hace que el software sea objetivamente diferente al hardware? No mucho.

Ambos proporcionan un sistema y un "lenguaje" que permite que los componentes más complejos de la computadora completen tareas para el usuario final. Ambos requieren un lenguaje acordado para realizar el trabajo. Imagínese si hubiera 10 personas en un partido de gritos, cada uno hablando un idioma diferente. Esta es la razón por la cual los diferentes sistemas operativos necesitan diferentes binarios, incluso si ambos sistemas operativos usan el mismo procesador.

Winny
fuente
Hola, tengo un problema similar al intentar compilar el archivo elf en Mac OS 10.9. ¿Podría decirme cómo ejecutar este onmac
AllIsWell
AllsWell, ¿has encontrado la manera de hacerlo?
Neocortex
1

lenguaje ensamblador? Necesita compilarlo, o más bien ensamblarlo.

man as
Emery Lapinski
fuente
2
El interrogador parece tener un lenguaje ensamblador y un código de máquina combinados . Ver el resultado de fileen la pregunta.
JdeBP