系统相关
首页 > 系统相关> > 是否有任何Linux发行版专注于二进制向后兼容?

是否有任何Linux发行版专注于二进制向后兼容?

作者:互联网

如果您构建可在当前版本的Windows上运行的可执行文件,那么该可执行文件可能会在较新版本的Windows上运行多年. Microsoft非常努力地确保这一点.

对于Linux,我们期望您拥有正在使用的软件的源代码,因此只要您保持源兼容性,就可以打破二进制兼容性.这导致发行版逐步淘汰旧库版本并定期破坏以前工作的东西.

对于使用Linux作为游戏平台的人来说,这是一个问题,因为游戏往往只以二进制形式分发.它使Linux端口在中断时看起来很糟糕,但我觉得一般来说尝试解决这个问题会更有效率,而不是希望每个人都更新他们的端口.

是否存在任何试图保持二进制兼容性的发行版,不一定是保留所有旧版本,但至少保留旧的sonames,以便与发行版n一起使用的二进制文件也应该与发行版n 1一起使用?

我能找到的最接近的东西是Valve的“Steam Runtime”,它是一个二进制兼容层,仅适用于通过Steam分发的程序.

解决方法:

基本上这归结为:你不能保持二进制兼容性并引入新功能,因为这些东西在大多数方面都直接相互对立.如果您引入主要的新功能,您最终必须更改ABI(通常在API更改后不久).现在,您可以使用版本化符号(例如Glibc有),但是这会使库的大小增加(并且在将二进制文件加载到内存时也可能会导致性能损失)并且开发人员当然不希望保留它库(遗留代码包含没有人有兴趣修复的错误).

在分销方面解决这个问题的通常方法有两个:

>不要更改版本 – 这对于像(按字母顺序)RedHat和SUSE以及其他一些(Debian,Slackware,Ubunty LTS以及可能是他们的克隆)的企业级发行版来说是典型的.
>允许同时安装各种版本的库.

在应用程序分发器上,这与Windows上的处理方式相同:将所需的所有内容放入分发包中.是的,这是它经常在Windows上完成的方式 – 这也是典型Windows系统通常比具有相同功能的Linux具有几倍更高磁盘空间要求的原因之一 – 应用程序只是在它们之间共享很少在某处有自己的副本.您可以将其视为每个带有自己的GTK / Qt堆栈的GTK / Qt应用程序.它可以有一些优点但缺点也很多.例如,从安全角度来看,它在TechnicolorTM中是一场噩梦.如果二进制文件是静态链接的,它甚至可以在FullHD中.

标签:linux,compatibility,distribution-choice
来源: https://codeday.me/bug/20190813/1646278.html