Linux发行版二进制兼容性

Linux发行版二进制兼容性,linux,binary-compatibility,Linux,Binary Compatibility,有没有办法在Linux发行版中生成二进制文件,并在另一个具有相同体系结构的发行版上运行?或者我应该在不同的发行版上编译和构建它 基于Redhat和Debian的二进制文件发行版之间是否存在兼容性? (我想在fedora上使用我的Ubuntu二进制文件!)通常,在linux发行版中使用二进制文件是可以的,只要您有相同的库可用。您可以使用“ldd”检查二进制文件需要哪些库。libc在涉及的发行版中应该有相同的版本。它可以工作。但这也取决于您使用的共享库的版本,包括libc,libstdc++是由不同

有没有办法在Linux发行版中生成二进制文件,并在另一个具有相同体系结构的发行版上运行?或者我应该在不同的发行版上编译和构建它

基于Redhat和Debian的二进制文件发行版之间是否存在兼容性?
(我想在fedora上使用我的Ubuntu二进制文件!)

通常,在linux发行版中使用二进制文件是可以的,只要您有相同的库可用。您可以使用“ldd”检查二进制文件需要哪些库。libc在涉及的发行版中应该有相同的版本。

它可以工作。但这也取决于您使用的共享库的版本,包括libc,libstdc++是由不同发行版的编译器版本强制执行的。

您可以静态链接可执行文件以实现可移植性。

静态链接二进制文件会降低可移植性,因为某些库无法在该机器上正常工作(不同的身份验证方法等)

如果您静态链接任何“不寻常”的库,并将受支持的发行版集保持在最低限度,您应该可以

不要静态链接C库(或整个二进制文件),这会带来麻烦:)


看看谷歌用Chrome做了什么。

你的应用程序是用什么语言编写的?如果它使用Python(没有C绑定)或Java或任何其他基于VM的语言,那么我认为您可以信任VM来确保您的应用程序能够在不同的Linux发行版上工作

此外,还有一些您可以参考的


HTH,Amit

输入Linux标准库,以减少各个Linux发行版之间的差异。 看


    • 最好的方法是分发源代码,并使在任何合理的Linux发行版上构建源代码变得容易。这比二进制分发要好,因为它不足以使二进制文件与共享库兼容。您还需要确保使您的程序适应诸如分发指定的位置和约定的内容,例如web应用程序的去向、电子邮件的发送方式、服务的启动方式、默认纸张大小的确定方式或大量其他细节

      例如,请参阅文档,该文档描述了发行版需要决定的许多事项,以确保在其上运行的应用程序之间的兼容性。你不需要通读或背诵,但它显示了可能绊倒你的问题的范围

      您可能应该与几个主要的发行版一起工作,以确保您的应用程序能够很好地与它们一起工作。如果你有礼貌地接近大多数发行版的开发人员,他们会很乐意提供帮助。如果幸运的话,您可以吸引发行版的志愿者为您制作二进制打包,这将很快为您提供反馈,说明您需要在源代码级别进行哪些更改,以使您的应用程序易于打包


      其他人已经提到的方法试图为这些变量制定一个交叉分布的解决方案,但它并不全面,也没有得到大多数分布的充分支持。然而,大多数分布认为如果不小心破坏LSB兼容性,这是一个问题。

      LSB绝对值得检查。虽然关于图书馆的工作,我最满意的是SO的回答和对rpath机制的详细处理

      我意识到这是一个非常古老的问题,但它在搜索结果中出现得很高,而且没有提到:

      。该工具通过在运行时进行分析,将所有需要的文件(包括库)打包在一起。我已经多次在命令行工具上成功地使用了它,其中一个例子是让tcpdump在运行自定义发行版的旧硬件设备上运行。CDE也不需要源代码,它只是打包了一个您可以运行的可执行文件

      有一次,我在运行
      cde
      命令时出错,该错误通过在命令前面加上
      LD\u-aspect\u-KERNEL=2.4.1
      来修复,这在几年前的最新版本中可能没有必要

      代码也在GitHub上:

      怎么样

      它是跨平台的,它一直存在,如果您咨询,并且您知道您的目标环境。它可以呈现我梦寐以求的任何UI,如果你愿意学习javascript,你可以从服务器编程和客户端编程的角度来实现这一点,而无需切换语言,如果你是同时做这两件事的人,这会很方便

      这可能是我们现在最接近法国语言的机器了,这是一件好事,因为这意味着可能会有更多的Pickin供所有相关人员使用

      人们不知道web浏览器可以从程序中完成大多数您想要的事情,包括渲染3D图形和PGP样式的加密


      我认为浏览器作为一个平台的最大好处是,每个人的侄子都知道如何在一台新电脑上安装浏览器,从那里只需一个url,包括一些商店的包装。

      有太多的变量,所以简单的答案是:这取决于。这些库弥补了这一差异的大部分。嗯,这不完全正确,取决于程序。我已经多次成功地交付了静态链接的二进制文件。设想一个编译器:它读取文件,进行填充,然后写入文件。是什么让你认为它不能静态链接?你可以静态链接你的二进制文件,但它们不能从C库的更新中获益,也不能与发行版或最终用户管理员可能做出的其他更改兼容,例如自定义nss库。不,他不能。人们什么时候知道静态链接的可执行文件不再受支持了。阅读LSB。该工具基于LSB,可以检查您的应用程序是否与许多Linux发行版(如RedHat、Debian、SUSE和Other)兼容