我遇到以下问题:我使用CodeBlocks在Linux Ubuntu 9.10上编译了我的应用程序。它是一个C程序(使用很少的库,比如libmysql,jasper ...) 我将已编译的程序复制到运行Debian 2.6.18的远程系统,chmodded + x应用程序但是在调用./my_app bash时仍然说“没有这样的文件或目录”
我是否需要在目标系统上编译我的程序?我确定程序所需的所有库都安装在目标系统上。
感谢您的任何建议。
答案 0 :(得分:2)
您可能缺少目标系统上的共享库。在二进制文件上运行ldd <binary name>
(列出所需的动态库),并检查目标计算机上是否存在列出的库。
答案 1 :(得分:2)
您的诊断尝试(LDD)和您报告的错误消息(没有这样的文件,不是动态可执行文件)不是很有帮助。 “file my_app”的输出可能更具指示性。但你不需要努力。来自一个声称在the Wiki中代表Ubuntu的人:
Debian与Ubuntu不是二进制兼容的事实已经说了很多 ...
为了清楚起见,我会再说一遍, 作为记录。我们的目标不是 与任何其他人的“二进制兼容性” 分配。为什么? ...
简而言之,因为我们相信Free 软件作为协作过程 专注于SOURCE CODE,并考虑 它优于专有工艺 这是专注于具体的 应用程序和二进制位。
所以,是的,你需要重新编译。
答案 2 :(得分:1)
我非常确定这个问题与库无关(你会收到不同的错误信息)。
确保您的程序不会尝试打开目标系统上不存在的任何文件。它可以做到这一点,然后用唯一的“没有这样的文件...”消息默默地失败。