Estoy tratando de ejecutar un ejecutable en Linux Shell (OpenELEC en raspberry pi)
OpenELEC:~ # /storage/fingi/usr/lib/autossh/autossh -sh: /storage/fingi/usr/lib/autossh/autossh: not found¿Qué significa el "no encontrado" en este caso?
Si trato de hacer ldd:
OpenELEC:~ # ldd /storage/fingi/usr/lib/autossh/autossh /usr/bin/ldd: eval: line 1: /storage/fingi/usr/lib/autossh/autossh: not foundY si hago el archivo:
OpenELEC:~ # file /storage/fingi/usr/lib/autossh/autossh /storage/fingi/usr/lib/autossh/autossh: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.26, BuildID[sha1]=599207c47d75b62ede5f214f9322ae2a18643eb7, strippedEl tipo de archivo tiene el formato correcto. Pero no funcionará y tampoco dará un mensaje de error más descriptivo.
Dado que openELEC es muy restrictivo, copié el ejecutable autossh de una instalación de raspbmc. Lo he hecho también para varios otros ejecutables (pantalla, bibliotecas boost, etc.) y funcionan bien.
¿Alguien puede sugerir cuál podría ser el problema?
Edición 1: como se sugirió, esta es la salida del comando de archivo en un ejecutable (también copiado de raspbmc) que está funcionando:
OpenELEC:~ # file /storage/fingi/usr/bin/screen /storage/fingi/usr/bin/screen: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.26, BuildID[sha1]=5c58f047a25caa2c51a81d8285b4f314abc690e7, stripped¿Qué significa el "no encontrado" en este caso?
Esto generalmente significa que el ejecutable no puede encontrar una o más bibliotecas (compartidas) para satisfacer sus símbolos externos.
Esto suele suceder cuando no hay bibliotecas almacenadas en initramfs, o falta una biblioteca compartida que necesita el ejecutable.
Esto también puede suceder si el ejecutable está construido con una biblioteca C que es incompatible con la biblioteca de tiempo de ejecución, por ejemplo, uClibc versus glibc/eglibc.
strings executable | less es la forma más rápida de ver las bibliotecas requeridas y los símbolos externos que requiere el ejecutable.
O
Vuelva a compilar su programa y use enlaces estáticos especificando la opción -static .
Verifique que el archivo se haya configurado con permisos ejecutables con ls -l si no ha cambiado con chmod +x /storage/fingi/usr/lib/autossh/autossh