当前位置: 首页 > 面试题库 >

“ -sh:executable_path:未找到”是什么意思

满和安
2023-03-14
问题内容

我试图在linux shell中运行可执行文件(在raspberry 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可执行文件。我也为其他几个可执行文件(屏幕,boost库等)完成了这些任务,它们工作正常。

谁能建议可能是什么问题?

编辑1:如建议的那样,这是正在运行的可执行文件(也从raspbmc复制的)上的file命令的输出:

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

问题答案:

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

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

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



 类似资料:
  • 问题内容: 我正在Windows的Eclipse中使用Tomcat 7。启动Tomcat时,我收到以下信息消息: 在java.library.path中找不到基于APR的Apache Tomcat本机库,该库可在生产环境中实现最佳性能。 这是什么意思,我如何提供APR库? 问题答案: 它的意思完全是它所说的:“在java.library.path中找不到在生产环境中实现最佳性能的基于APR的Apa

  • 问题内容: 我有以下示例: 在这段代码中,我可以理解Enum创建了一个Enum类型的Sizes。 我的问题是:EnumSet类型的对象吗?到底是什么意思 我真的很想更好地理解它。 问题答案: 对于任何变量,可以在其声明中找到其类型: 是的,(应该命名,因为它是一个集合)是type 。它也应该被泛化,因此被声明为 它的意思是那是type 。一个是一个包含一个特定的枚举类型的枚举例如,在比其他更有效的

  • 问题内容: 这是代码: 但是当我将“ #round”更改为“ this”时。它不会工作。为什么?(实际上是可行的,但是当我将它们放入setInterval()时,它将无法工作) 更改为“ this”,将无法使用。 问题答案: 是对调用当前函数的成员的引用… 那么您可以将其包装在jquery函数中以选择它,就像选择其他选择器一样。 因此调用匿名函数,这样它就不会被可引用成员调用,因此它默认为该对象。

  • 问题内容: 将Jersey从1.15版本升级到1.17后,它开始记录以下消息: 产生此类消息的服务示例: 我的第一印象是将其视为错误消息,完全基于消息的措辞方式(“找不到”)。但是,它以INFO级别记录,并且在实践中似乎没有任何影响,因为所有服务都可以继续工作。 所以我的问题是这些日志消息是否表明我们配置或使用Jersey的方式存在(潜在)问题。由于以前的版本没有发生这种情况,因此我已经检查了发行

  • 问题内容: 我已经看过几次了,但我不清楚它的含义。您何时以及为什么要这样做? 我知道接口的作用,但是我不清楚这一点,这让我觉得我错过了正确使用它们的机会。 如果要这样做,是否只是这样: 您可以使用任何实现的类吗?您什么时候需要这样做?我唯一能想到的是,如果您有一个方法并且不确定要实现的对象将传递什么对象。我想不出您需要多久这样做一次。 另外,如何编写一个方法来接受实现接口的对象?那可能吗? 问题答

  • 问题内容: 在java int,float等中,是原始类型。如果我们需要将其与泛型一起使用,则使用包装器类。但是,以下声明在Java中仍然有效, 即使它是原始类型,如何调用? 问题答案: 原始对象成为对象 对于基元,在相应的包装器类中有一些名为TYPE的常量的Class对象可用-即,int.class更改为java.lang.Integer.TYPE。对于其他类型,编译器在正在编译的类中创建一个私