将Unix程序从一个主机移植到另一个主机

时间:2012-07-19 12:22:17

标签: linux

我有一个远程Unix服务器,我想运行各种程序。我可以轻松地设置一个运行一些Unix的本地虚拟机,我可以在其上编译我的程序。问题是,似乎将Unix程序从一个主机移动到另一个主机总是失败。 : - (

例如,我在OpenSUSE 11.4系统上编译了test,并尝试运行它。它工作得很好。但后来我将已编译的二进制文件复制到Debian 6.0.3系统,现在它拒绝运行。相反,我只是得到

  

test:加载共享库时出错:libgmp.so.10:无法打开共享对象文件:没有这样的文件或目录

大概安装编译器也会安装所有依赖项 - 但只能在本地计算机上安装。我可能不得不以某种方式猜测我需要在远程机器上放置什么依赖项。

最重要的是,我没有远程机器的shell访问权限。我只有FTP。所以我不能安装任何东西。我只能将文件复制到它。所以我想知道我是否可以必要的共享库复制到与编译二进制文件相同的文件夹中。那会有用吗?或者我必须做一些更复杂的事情?

1 个答案:

答案 0 :(得分:1)

根据具体情况,我认为最好的选择是编译静态二进制文件;请参阅-static的{​​{1}}选项。但是,这有缺点,可能并不总是有效。

您也可以尝试复制共享库,但是您需要指示动态加载程序在您添加它们的位置搜索库(您的二进制文件必须与gcc开关链接。

首先尝试-Wl,-rpath,/path/to/libs。它应该更容易。

如果您想深入研究二进制可移植性问题,请查看以下来源: