He descargado un juego (Shank) pero el archivo bin no se ejecuta. El error que se muestra cuando intento iniciar el ejecutable es:
bash: ./shank-linux-120720110-1-bin: No such file or directory
64-bit
files
games
executable
Francesco
fuente
fuente
Respuestas:
Probablemente esté intentando ejecutar un binario de 32 bits en un sistema de 64 bits que no tiene instalado soporte de 32 bits.
Hay tres casos en los que puede obtener el mensaje "No existe tal archivo o directorio":
file shank-linux-120720110-1-bin
muestra algo así como "ELF ejecutable LSB de 32 bits ...") y, sin embargo, cuando intenta ejecutarlo, le dicen que el archivo no existe.El mensaje de error en este último caso es ciertamente confuso. Lo que le dice es que falta un componente clave del entorno de tiempo de ejecución necesario para ejecutar el programa. Desafortunadamente, el canal a través del cual se informa el error solo tiene espacio para el código de error y no para esta información adicional de que realmente es el entorno de tiempo de ejecución el culpable. Si desea la versión técnica de esta explicación, lea Obtener el mensaje "No encontrado" cuando ejecute un binario de 32 bits en un sistema de 64 bits .
El
file
comando le dirá exactamente qué es este binario. Con algunas excepciones, solo puede ejecutar un binario para la arquitectura del procesador para el que es su versión de Ubuntu. La principal excepción es que puede ejecutar binarios de 32 bits (x86, también conocido como IA32) en sistemas de 64 bits (amd64, también conocido como x86_64).En Ubuntu hasta 11.04, para ejecutar un binario de 32 bits en una instalación de 64 bits, debe instalar el
ia32-libs
paquete . Es posible que deba instalar bibliotecas adicionales (si lo hace, recibirá un mensaje de error explícito).Desde que 11.10 ( oneiric ) introdujo el soporte multiarch , aún puede instalar
ia32-libs
, pero puede elegir un enfoque más detallado, es suficiente para obtener (además de cualquier otra biblioteca necesaria).libc6-i386
fuente
ldd
para verificar si le falta una biblioteca.ldd kgio_ext.so
podría decir algo comolibruby.so.2.3 => not found
entre otrosbash: ...some...path...: No such file or directory
puede aparecer: después de mover el archivo ejecutable. Bash parece almacenar en caché las rutas a los ejecutables que se encuentran en $ PATH; correhash -r
para despejarlo. Ver: unix.stackexchange.com/a/5610/11352Sistemas Ubuntu Multiarch de 64 bits
Sigue esta respuesta solo si la salida de los
file file-name
shows,Para ejecutar el archivo ejecutable de 32 bits en un sistema Ubuntu múltiples arquitecturas de 64 bits, hay que añadir
i386
la arquitectura y también hay que instalarlibc6:i386
,libncurses5:i386
,libstdc++6:i386
estos tres paquetes de bibliotecas.fuente
libselinux1:i386
Al instalar el deb para 32 bits, me di cuenta de que me faltaban algunas bibliotecas (además de ia32-libs y libc6). Primero resolví este problema dando este comando:
Entonces recibí otro error:
Obviamente, estas bibliotecas se instalaron correctamente. Sin entrar en detalles, tuve que vincular las bibliotecas a mano. Entonces me di cuenta de que también podría ser una solución más fácil a través de Synaptic instalar los siguientes paquetes:
Después de eso, el siguiente problema fue la pantalla negra durante la reproducción, que resolví reemplazando el ejecutable en / Shank / bin con esto: http://treefort.icculus.org/smb/smb-linux-mesa-hotfix-test.tar .bz2 .
Espero que sea útil para alguien. Si necesita más ayuda o más detalles, no dude en ponerse en contacto conmigo.
fuente
Aquí hay una transcripción que muestra un poco más sobre la naturaleza del problema y cómo solucionarlo a partir de Ubuntu 16.04. Tenga en cuenta que aunque los
file
informes están "vinculados dinámicamente", losldd
informes "no son un ejecutable dinámico".Una vez que instala libc6: i386, las cosas comienzan a mejorar ...
Para completar el trabajo, es posible que deba identificar e instalar bibliotecas adicionales de una en una ...
No sé si hay una forma sistemática de identificar las bibliotecas correctas para instalar. Hay un poco de conjeturas que asignan los mensajes de error a los nombres de los paquetes (la finalización de la pestaña ayuda).
fuente
ldd
(incorrectamente) informa "no es un ejecutable dinámico".Para ampliar la respuesta de @Gilles, hay al menos tres escenarios que resultan en este error:
file
comando funciona), lo que genera un mensaje de error desconcertante. Esto puede significar que hay un problema con el cargador.Categorías de problemas del cargador:
El cargador de un ejecutable no existe. Puede verificar esto usando el comando de archivo y ver si el cargador existe. P.ej
Aviso
interpreter /lib64/ld-lsb-x86-64.so.3
; Si este archivo no existe, debe instalarlo. Para este cargador en particular en 16.04, la respuesta resultó sersudo apt-get install lsb
.Problemas con el cargador de un script (ver esta respuesta ).
ldd <file-name>
para buscar bibliotecas "no encontradas". Vea esta respuesta para más información.El cargador que no existe podría deberse a una falta de coincidencia de 32/64 bits o alguna otra razón. Puede haber otros tipos de errores de cargador que no conozco.
fuente
file lmutil
no mostré el intérprete, pero loldd
hice, y la instalaciónlsb
resolvió el problema.