无法从 linux 控制台 运行 C++ 应用程序 - "not found" 错误
Can't run C++ app from linux console - "not found" error
我有 2 个 MIPS 路由器 运行ning openwrt linux。在其中一个上一切都很好,我可以从控制台轻松 运行 我的应用程序。
我通过 scp(这是我的应用程序,一个文件)将它复制到另一个路由器,当我尝试 运行 它时,我得到 "not found" 错误:
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的新手,但找不到这里的问题。
在您的 ./app 内部,我感觉您在调用不存在的东西。在这种情况下,"ash" 命令。
基于这个错误
ash: ./app: not found
我觉得您正在 运行在您的 ./app 中编写一段代码。基于 "ash" 我会说你正在尝试 运行 "bash"。如果我不得不猜测你在你的脚本
中打错了你的header
#!/bin/bash
我当然不是编译器专家,但根据在嵌入式系统上移动二进制文件时的痛苦经历,这个神秘的错误让我相信这是某种依赖性错误;可能是缺少链接器。在目标系统上重新编译二进制文件已经解决了我过去的问题。
正如 Kevin Vasko 在评论中所问:"can you run ldd ./app on it?"
这是确定程序需要哪些库和链接器的好方法。也可以按照 this answer 中的建议来演示类似的问题,并且 运行 以下命令仅获取 "program interpreter" 行(ldd
将显示多个依赖项):
readelf -l app | grep "program interpreter"
在我的系统上,这显示了 GNU 链接器 ld
,但带有一行可能有用的解释性文本 [Requesting program interpreter: /lib64/ld-linux-x86-64.so.2]
。
因此,我怀疑如果我从我的系统中删除这个 "program interpreter",我会得到同样的错误(可能还有很多其他错误)。再次尝试在目标系统上重新编译二进制文件或通过将正确的文件移动到正确的位置来手动满足任何缺失的依赖项。
我有 2 个 MIPS 路由器 运行ning openwrt linux。在其中一个上一切都很好,我可以从控制台轻松 运行 我的应用程序。 我通过 scp(这是我的应用程序,一个文件)将它复制到另一个路由器,当我尝试 运行 它时,我得到 "not found" 错误:
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的新手,但找不到这里的问题。
在您的 ./app 内部,我感觉您在调用不存在的东西。在这种情况下,"ash" 命令。
基于这个错误
ash: ./app: not found
我觉得您正在 运行在您的 ./app 中编写一段代码。基于 "ash" 我会说你正在尝试 运行 "bash"。如果我不得不猜测你在你的脚本
中打错了你的header#!/bin/bash
我当然不是编译器专家,但根据在嵌入式系统上移动二进制文件时的痛苦经历,这个神秘的错误让我相信这是某种依赖性错误;可能是缺少链接器。在目标系统上重新编译二进制文件已经解决了我过去的问题。
正如 Kevin Vasko 在评论中所问:"can you run ldd ./app on it?"
这是确定程序需要哪些库和链接器的好方法。也可以按照 this answer 中的建议来演示类似的问题,并且 运行 以下命令仅获取 "program interpreter" 行(ldd
将显示多个依赖项):
readelf -l app | grep "program interpreter"
在我的系统上,这显示了 GNU 链接器 ld
,但带有一行可能有用的解释性文本 [Requesting program interpreter: /lib64/ld-linux-x86-64.so.2]
。
因此,我怀疑如果我从我的系统中删除这个 "program interpreter",我会得到同样的错误(可能还有很多其他错误)。再次尝试在目标系统上重新编译二进制文件或通过将正确的文件移动到正确的位置来手动满足任何缺失的依赖项。