“-sh:executable_path:not found”是什么意思
- 2024-11-04 08:42:00
- admin 原创
- 197
问题描述:
我正在尝试在 Linux Shell 中运行一个可执行文件(树莓派上的 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 可执行文件。我也对其他几个可执行文件(screen、boost 库等)进行了同样的操作,它们运行良好。
有人能指出可能是什么问题吗?
编辑 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
解决方案 1:
在这种情况下“未找到”是什么意思?
这通常意味着可执行文件找不到一个或多个(共享)库来满足其外部符号。
这通常发生在 initramfs 中没有存储任何库,或者缺少可执行文件所需的共享库时。
如果可执行文件使用与运行时库不兼容的 C 库构建,例如 uClibc 与 glibc/eglibc,也会发生这种情况。
strings executable | less
是查看可执行文件所需的库和外部符号的最快方法。
或者
重新编译程序并通过指定-static
选项使用静态链接。
解决方案 2:
检查文件是否已设置为可执行权限,ls -l
如果文件没有改变,则使用chmod +x /storage/fingi/usr/lib/autossh/autossh
相关推荐
热门文章
项目管理软件有哪些?
热门标签
云禅道AD