在Ubuntu(和Debian)中,-s4在libgcc-s4中是什么意思?

k5hmc34c  于 2022-11-13  发布在  其他
关注(0)|答案(1)|浏览(141)

在检查libgcc为交叉编译环境做准备时,我注意到有一些libgcc-s[124]-{arch}包-有很多s1包,但只有很少的s2s4包(m68 k正好有1个,hppa正好有1个)。
这些是什么意思?它们是如何分配的?有没有关于它的维基?

chy5wohz

chy5wohz1#

非常不幸的是,没有wiki或任何类型的网络资源。唯一可以找到关于它的信息的地方是gcc-ver-base包中的“changelog”文件。
信息也非常分散,很难找到。但我设法总结:
libgcc库实现了GCC编译器所期望的但目标平台所缺少的一些功能。这些功能中包括一组“异常处理”例程。这些EH例程与其他计算整数和浮点例程不同,它们依赖于目标平台的ABI。
由于Debian中的异常处理在版本和平台之间会有变化,因此必须通过使用版本屏障来维护兼容性-也就是说,使用版本控制来防止可执行二进制文件与不兼容的动态库链接。
这个版本被称为“soversion”(更改日志术语),它代表共享对象版本,其中共享对象是Unix/Linux动态库的术语。
m68 k的版本被撞过一次,所以是2; hppa的情况比较复杂,我不能确定它的soverversion-3,但碰巧它曾经从soverversion-6恢复到soverversion-4。
显然,Debian认为从功能正确性的Angular 来看,对如此重要的库在包名中进行显式版本控制是有益的。

相关问题