“-sh:executable_path:not found”是什么意思

时间:2014-01-13 05:43:49

标签: linux shell raspberry-pi embedded-linux

我正在尝试在linux shell中运行可执行文件(Rasberry pi上的OpenELEC)

OpenELEC:~ # /storage/fingi/usr/lib/autossh/autossh
-sh: /storage/fingi/usr/lib/autossh/autossh: not found

这种情况下“未找到”是什么意思?

如果我尝试做ldd:

OpenELEC:~ # ldd  /storage/fingi/usr/lib/autossh/autossh
/usr/bin/ldd: eval: line 1: /storage/fingi/usr/lib/autossh/autossh: not found

如果我确实提交:

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

文件类型格式正确。但它不会工作,也不会给出更多描述性的错误信息。

由于openELEC非常严格,我从raspbmc安装中复制了autossh可执行文件。我已经为其他几个可执行文件(屏幕,升级库等)完成了它们,它们工作正常。

任何人都可以提出可能存在的问题吗?

编辑1: 正如所建议的那样,这是一个可执行文件(也是从raspbmc复制)的文件命令输出正在工作:

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

2 个答案:

答案 0 :(得分:2)

  

这种情况下“未找到”是什么意思?

这通常意味着可执行文件无法找到一个或多个(共享)库来满足其外部符号 这通常发生在initramfs中没有存储库,或者缺少可执行文件所需的共享库时 如果可执行文件是使用与运行时库不兼容的C库构建的,例如,也可能发生这种情况。 uClibc与glibc / eglibc。

strings executable | less是查看可执行文件所需的库和外部符号的最快方法 或
通过指定-static选项重新编译程序并使用静态链接。

答案 1 :(得分:0)

如果文件没有随ls -l更改

,请检查该文件是否已设置为chmod +x /storage/fingi/usr/lib/autossh/autossh的可执行权限