La respuesta a la pregunta en el título está justo al principio de la salida:
ELF ejecutable LSB de 64 bits , x86-64
ELF es el formato ejecutable y enlazable , el formato de archivo ejecutable binario más utilizado por Linux.
x86-64 es la arquitectura del binario, la versión de 64 bits del conjunto de instrucciones x86 introducido originalmente por AMD . Por razones que me superan, Microsoft se refiere a él como "x64", pero eso es lo mismo.
Si necesita conocer la arquitectura del núcleo en sí, puede usar uname -mpi
. Por ejemplo, en mi sistema, eso imprime:
x86_64 desconocido desconocido
lo que significa que estoy ejecutando un núcleo x86-64.
Si está interesado en la CPU en sí, busque /proc/cpuinfo
detalles sobre las CPU detectadas por el kernel de Linux.
Un ejecutable 80x86 de 32 bits se identifica file
como, por ejemplo:
ELF ejecutable LSB de 32 bits , Intel 80386 , versión 1 (SYSV), vinculado dinámicamente (usa libs compartidas), para GNU / Linux 2.6.8, despojado
que nos dice que es un ejecutable de 32 bits que usa el conjunto de instrucciones Intel 80386 (posiblemente con extensiones).
Tenga en cuenta que no es tan simple como las arquitecturas de 32 bits frente a las de 64 bits. Por ejemplo, el kernel de Linux admite arquitecturas de 32 bits como Intel 80386, AVR32 , S / 390 y Unicore32 . En el lado de 64 bits, Linux se puede usar en PA-RISC , x86-64, Itanium y Alpha , entre otros. Sin embargo, no todas las distribuciones proporcionan archivos binarios para todas las arquitecturas (y dudo que haya distribuciones que se dirijan a todas las arquitecturas de CPU compatibles por igual). Entonces, si desea saber si un binario dado será ejecutable en un sistema dado, debe considerar la arquitectura , en lugar del tamaño de palabra nativo de la CPU.
El quinto byte de un archivo ejecutable binario de Linux ( formato ELF, consulte Wikipedia ) es 1 para un ejecutable de 32 bits, 2 para un ejecutable de 64 bits.
Para ver esto para un programa llamado "foo", escriba en la línea de comando
fuente
Si desea evitar la tubería de 'cabeza', puede hacer
Esto imprimirá 01 si foo es un binario de 32 bits y 02 si es 64. Todavía puede incluir algunos espacios iniciales, vale la pena saber si está haciendo comparaciones automáticas en los resultados.
Si se encuentra esto útil en un contenedor básico de Ubuntu Docker donde no se instaló 'archivo'.
fuente