共享库的版本控制如下:
创建共享库时,请给它一个真实名称和一个
soname。这些用于安装共享库(创建共享库和指向共享库的链接)。
因此,您可能会遇到以下情况:
pax> ls -al xyz*-rw-r--r-- 1 pax paxgroup 12345 Nov 18 2009 xyz.so.1.5lrwxrwxrwx 1 pax paxgroup 0 Nov 18 2009 xyz.so.1 -> xyz.so.1.5lrwxrwxrwx 1 pax paxgroup 0 Nov 18 2009 xyz.so -> xyz.so.1
与
xyz.so.1.5拥有的
SONAME的
xyz.so.1。
当连接环节
xyz.so,它遵循的链接一路
xyz.so.1.5和使用其
SONAME的
xyz.so.1存储的可执行文件。然后,当您 运行
该可执行文件时,它会尝试加载
xyz.so.1指向某个特定文件
xyz.so.1.N(不一定是1.5版)的文件。
因此,您可以安装
xyz.so.1.6和更新
xyz.so.1链接以指向该链接,而已经链接的可执行文件将使用该链接。
这种多层方法的一个优点是,您可以拥有多个同名(
xyz.so.1.*,
xyz.so.2.*)的潜在不兼容库,但是在每个主要版本中,
由于它们应该兼容 ,因此可以自由升级它们。
链接新的可执行文件时:
- 与之链接的人
xyz.so
将获得最新主要版本的最新次要版本。 - 与之链接的其他人
xyz.so.1
将获得特定主要版本的最新次要版本。 - 还有其他链接
xyz.so.1.2
将获得特定主要版本的特定次要版本。
现在,当我们检查您的评论时,请记住最后一段:
现在让我们说我用以下实名编译同一库的另一个版本
libmy.so.2.0。根据指南,SONAME为libmy.so.2.0。
不,我不相信。该
soname会更可能是
libmy.so.2这样,你可以做轻微的更新到
2.x流并获得最新的行为。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)