Answers:
如果Linux发行版中编译的可执行文件具有所需的共享库,则该文件可以在其他发行版上工作。CentOS有相当老的库版本,因此Ubuntu的版本可能太新了。但是通常,如果Ubuntu仅具有libfoo5
并且libfoo6
您需要,libfoo3
您可以从早期的Ubuntu版本中获取它。
CentOS和Ubuntu使用不同的打包系统:rpm与deb。您可以使用将rpm转换为deb alien
。根据您是否具有所需的依赖关系,生成的软件包可能安装也可能无法安装。将rpm转换为普通存档(再次使用alien
),然后将其解压缩到/opt
或下的单独目录中可能会更容易/usr/local
。
如果该程序没有随附的依赖项列表,则可以运行ldd /path/to/binary
以查看其需要的库。你会看到类似的输出libfoo.so.4 => not found
,如果事情的缺失。
alien
是一个命令行程序。我不知道周围是否有GUI。如果您不熟悉命令行,建议您尝试获取Ubuntu的二进制软件包。
CentOS的是“100%的二进制兼容” 与它的商业对手,红帽企业版Linux。由于RHEL是一个包含支持合同和各种企业事务的许可系统,因此并非所有人都希望运行它。但是,在开源世界中,所有开发都必须共享,因此,尽管他们为支持合同,媒体等收取费用,但仍然必须共享源。CentOS对其进行了重新包装,以免费提供给社区。
而且,仅在等效版本的RHEL和CentOS之间存在“ 100%兼容性” 。库版本随每个主要版本而变化,但是由于这些项目是同步发布的,因此您可以在它们之间交换包,只要它们都为相同的主要版本设置即可。
发行版之间的差异,尤其是基于RPM的发行版(如CentOS)和基于Debian 的发行版(如Ubuntu)之间的差异可能很大,而且给定的软件包将无法在它们之间移植。但是,整个系统大致相同,为一个开发的软件通常可以轻松为另一个开发,而编译和打包则有所不同。如果您希望引入所有正确的库版本,则一个库中的二进制文件实际上将在另一库中工作。参见Gilles的答案。