Libtool库版本管理与运行时动态链接详解
1. Libtool库版本管理方案概述
Libtool开发者努力设计了一种版本管理方案,该方案能与任何Libtool平台所使用的方案相映射。此方案具有很高的灵活性,能够与现有Libtool平台未来的合理变更,甚至新的Libtool平台实现向前兼容。不过,它并非万能的。当Libtool为新的共享库平台进行扩展时,总会出现一些需要认真仔细评估的情况。由于没人能成为所有系统的专家,所以Libtool开发者在很大程度上依赖外部贡献,以创建从Libtool版本管理方案到新的或潜在的Libtool平台方案的正确映射。
1.1 库版本即接口版本
我们应避免将库版本号(无论是Libtool的还是特定平台的)视为产品的主版本、次版本和修订版本(也称为补丁或微版本)的值。实际上,这些值对操作系统加载器有着非常明确的意义,为了避免让加载器产生混淆,每次库有新版本发布时,都必须正确更新这些值。若加载器被混淆,可能会根据为库分配的错误版本信息加载错误的库版本。
共享库的版本号实际上代表的是接口版本。这里所说的接口,是指库向用户或其他想要调用该接口所提供函数的程序员呈现的应用二进制接口。可执行程序通常有一个明确的标准入口点(在C语言中通常称为main),而共享库有多个入口点,且这些入口点通常没有被广泛理解的标准化方式。这使得判断一个库的特定版本是否与同一库的另一个版本接口兼容变得更加困难。
在Libtool的版本管理方案中,共享库被认为支持一系列接口版本,每个版本由一个唯一的整数值标识。如果接口的任何公开可见方面在公开版本之间发生了变化,那么它就不能再被视为同一个接口,而是一个新的接口,由一个新的整数标识符来标识。每次
超级会员免费看
订阅专栏 解锁全文
1110

被折叠的 条评论
为什么被折叠?



