what does "-sh: executable_path:not found" mean

embedded-linux, linux, raspberry-pi, shell

Solution

What does the "not found" in this case mean ?

This usually means that the executable cannot find one or more (shared) libraries to satisfy its external symbols. This usually happens when no libraries are stored in the initramfs, or there is a shared library missing that the executable needs. This can also happen if the executable is built with a C library that is incompatible with the runtime library, e.g. uClibc versus glibc/eglibc.

`strings executable | less` is the quickest way to see the required libraries and external symbols that the executable requires. Or Recompile your program and use static linking by specifying the `-static` option.

Problem

i am trying to run an executable in linux shell ( OpenELEC on raspberry pi ) ``` OpenELEC:~ # /storage/fingi/usr/lib/autossh/autossh -sh: /storage/fingi/usr/lib/autossh/autossh: not found ``` What does the "not found" in this case mean ? If i try to do ldd: ``` OpenELEC:~ # ldd /storage/fingi/usr/lib/autossh/autossh /usr/bin/ldd: eval: line 1: /storage/fingi/usr/lib/autossh/autossh: not found ``` And if i do file: ``` 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, stripped ``` The file type is in correct format . But it wont work adn wont give more descriptive error msg either. Since openELEC is very restrictive, i had copied the autossh executable from a raspbmc installation . I have done it for several other executables as well ( screen , boost libraries etc ) and they work fine . Can anyone suggest what might be the issue? Edit 1: as was suggested, this is the output of file command on an executable ( also copied from raspbmc ) that is working: ``` 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 ```

Original source