在Debian上运行C程序的问题

时间:2010-03-01 10:18:44

标签: c linux deployment debian

我遇到以下问题:我使用CodeBlocks在Linux Ubuntu 9.10上编译了我的应用程序。它是一个C程序(使用很少的库,比如libmysql,jasper ...) 我将已编译的程序复制到运行Debian 2.6.18的远程系统,chmodded + x应用程序但是在调用./my_app bash时仍然说“没有这样的文件或目录”

我是否需要在目标系统上编译我的程序?我确定程序所需的所有库都安装在目标系统上。

感谢您的任何建议。

3 个答案:

答案 0 :(得分:2)

您可能缺少目标系统上的共享库。在二进制文件上运行ldd <binary name>(列出所需的动态库),并检查目标计算机上是否存在列出的库。

答案 1 :(得分:2)

您的诊断尝试(LDD)和您报告的错误消息(没有这样的文件,不是动态可执行文件)不是很有帮助。 “file my_app”的输出可能更具指示性。但你不需要努力。来自一个声称在the Wiki中代表Ubuntu的人:

  

Debian与Ubuntu不是二进制兼容的事实已经说了很多   ...
  为了清楚起见,我会再说一遍,   作为记录。我们的目标不是   与任何其他人的“二进制兼容性”   分配。为什么?   ...
  简而言之,因为我们相信Free   软件作为协作过程   专注于SOURCE CODE,并考虑   它优于专有工艺   这是专注于具体的   应用程序和二进制位。

所以,是的,你需要重新编译。

答案 2 :(得分:1)

我非常确定这个问题与库无关(你会收到不同的错误信息)。

确保您的程序不会尝试打开目标系统上不存在的任何文件。它可以做到这一点,然后用唯一的“没有这样的文件...”消息默默地失败。