在检查libgcc
以准备跨编译环境时,我注意到有一些libgcc-s[124]-{arch}
包——有很多s1
包,但只有很少的s2
和s4
包(对于m68k正好是1,对于hppa正好是1(。
这些是什么意思?他们是如何分配的?有维基吗?
非常不幸的是,它没有wiki或任何类型的网络资源;变更日志";gcc-ver-base包中的文件。
信息也很分散,很难定位。但我想总结一下:
libgcc库实现了GCC编译器所期望的一些功能,但目标平台缺乏这些功能。在这些特征中;异常处理";例程。与其他计算整数和浮点例程不同,这些EH例程依赖于目标平台的ABI。
由于异常处理在Debian中的版本和平台之间有变化,因此必须通过使用版本屏障来保持兼容性,也就是说,使用版本控制来防止可执行二进制文件与不兼容的动态库链接。
这个版本被称为";soversion";(changelog术语(,表示共享对象版本,其中共享对象是Unix/Linux中动态库的术语。
m68k的版本被修改过一次,所以它是2;hppa的情况有点复杂,我无法确认它的soversion-3,但碰巧它曾经从soversion-6恢复到soversion-4。
显然,Debian认为,从功能正确性的角度来看,对如此重要的库在包名称中进行显式版本控制是有益的。