当尝试运行可执行文件时,shell 响应“未找到”的所有可能原因是什么?
- 可执行文件确实存在并且具有执行权限(
chmod +x
)。 ldd
表示所有依赖项都存在。- 文件表明可执行文件是针对正确的架构进行编译的(没有理由不应该这样,它是在 Yocto 构建中与系统的其余部分一起编译的)。
还有什么其他原因呢?
答案1
给定具有可执行权限的二进制文件,“未找到”错误消息的常见原因是二进制文件请求的动态加载程序不存在。您可以使用以下方法检查readelf
:
$ readelf -l /path/to/binary | grep interpreter
[Requesting program interpreter: /lib64/ld-linux-x86-64.so.2]
如果该解释器不存在,则可执行文件将无法运行,并出现“未找到”错误。看在 64 位系统上运行 32 位二进制文件时收到“未找到”消息了解详情。