我有两台运行openwrt linux的MIPS路由器。其中一个很好,我可以从控制台轻松运行我的应用程序。 我把它复制到scp(这是我的应用程序,一个文件)到另一个路由器,当我尝试运行它时,我得到“找不到”错误:
root@OpenWrt:~# pwd
/root
root@OpenWrt:~# ls -l
-rwxr-x--- 1 root root 132001 Apr 2 17:37 app
root@OpenWrt:~# ./app
ash: ./app: not found
root@OpenWrt:~# uname -a
Linux OpenWrt 3.7.9 #3 Mon Aug 5 16:25:53 EEST 2013 mips GNU/Linux
我不是linux的新手,但是找不到问题所在。
答案 0 :(得分:2)
我当然不是编译专家,但是在嵌入式系统上移动二进制文件时遇到了痛苦的经历,这种神秘的错误让我相信它是某种依赖性错误;可能是缺少的链接器。在目标系统上重新编译二进制文件已经解决了我过去的问题。
正如Kevin Vasko在评论中所说的那样:"你可以在它上面运行ldd ./app吗?"
这是确定程序所需的库和链接器的好方法。也可以按照this answer中的建议进行操作,演示类似的问题并运行以下命令以仅获取"程序解释器" line(ldd
将显示几个依赖项):
readelf -l app | grep "program interpreter"
在我的系统上,这显示了GNU链接器ld
,但带有可能有用的文本说明行[Requesting program interpreter: /lib64/ld-linux-x86-64.so.2]
。
因此,我怀疑如果我删除了这个"程序翻译"从我的系统,我会得到同样的错误(可能还有其他一些)。再次尝试重新编译目标系统上的二进制文件,或者通过将正确的文件移动到正确的位置来手动满足任何缺少的依赖项。
答案 1 :(得分:0)
在你的./app里面,我有一种感觉,你在呼唤某些东西并不存在。在这种情况下," ash"命令。
基于此错误
ash: ./app: not found
我觉得你在./app中运行了一段代码。基于" ash"我会说你正在尝试运行" bash"。如果我不得不猜你在脚本中错误输入了标题
#!/bin/bash