正如您在Linux内核的变更中看到的那样,有一些更新消息,比如"Bump ABI - Maverick 28“。
根据Ubuntu Wiki,ABI就像是内核空间和其他模块之间的桥梁(我的解释)。
这样的更新是否增加了额外的功能和/或错误?我应该将我的内核升级到下一个版本吗?
发布于 2011-03-21 16:41:16
注:我不是核心专家,所以这是基于收集的知识和经验。
ABI“凸点”不应带来新特性,尽管它可能“修复”某些模块/应用程序中的bug,这些模块/应用程序正在寻找更高版本的ABI。您仍然应该安装这些更新,因为通常保持所有组件的同步将确保稳定性和安全性。
发布于 2011-03-21 17:02:17
首先,您没有看到linux内核的changelog。您正在查看元包,它是一个依赖于最新内核的包。你可能想要这样的东西:http://changelogs.ubuntu.com/changelogs/pool/main/l/linux-image-2.6.35-28-generic/linux-image-2.6.35-28-generic_2.6.35-28.50/变更率g
这个元包的目的是通过这些ABI转储来转换用户。
在ABI和内核方面,我与您持有相同的观点。实际上,ABI凸起意味着所有模块都需要针对更新的内核重新构建。
我的理解也与Roland一致,因为ABI碰撞并不意味着新特性,只是关键的修复和安全更新。
发布于 2014-11-03 10:52:43
ABI是应用程序二进制接口(不要与API、应用程序编程接口相混淆)。ABI定义了应用程序使用的数字的大小、符号和顺序。
为了清楚起见,这里有一个例子:我想对建筑物的年代进行编码,以年份表示。为此,我可以使用C unsigned char,它是一种大小为1字节的类型,可以将值从0编码到255。现在假设我发现255是一个太低的限制,因为有超过255年前建造的建筑物。然后,我可以使用C unsigned int,它长4字节,可以编码0到65535之间的值。
将类型从char更改为int,我没有改变字段的语义含义(这是一个以年数表示的时代,现在仍然如此),但是我改变了它的大小。每一个与我的应用程序交互的软件都不需要修改,但是它会说一种不同的“语言”。
因此,当内核更改其ABI时,意味着它已经改变了它所讲的语言,但没有添加、删除或修改任何功能。所有必须与内核交互的第三方模块都需要重新编译才能使用这种新语言,但它们不需要进行任何修改才能正常工作。
https://askubuntu.com/questions/31338
复制相似问题