Lo sentimos, este archivo es para GNU/Linux.

Lo sentimos, este archivo es para GNU/Linux.

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

$ ./b1

Obtuve el siguiente error:

-bash: ./b1: cannot execute binary file

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

A continuación se muestra 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

Respuesta1

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 elELF(Formato extensible y enlazable)formato, 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 de Linux modernas.

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

Entonces... ¿Por qué no funciona b1?XYZ¿SO 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 el inglés y el francés. Puede que pertenezcan a la misma familia lingüística, pero aun así no se pueden hablar ambas al mismo tiempo. Esto lleva a una conclusión:

Computadoras diferentes "hablan" en lenguas diferentes.

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

¿Qué hace que el software sea objetivamente diferente del hardware? Poco.

Ambos proporcionan un sistema y un "lenguaje" que permite que 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 una pelea de gritos, cada una hablando un idioma diferente. Es por eso que diferentes sistemas operativos necesitan binarios diferentes, incluso si ambos sistemas operativos usan el mismo procesador.

Respuesta2

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

man as

información relacionada