【问题标题】:What are the 3 digits in a so name?so名字的三位数字是什么?
【发布时间】:2012-11-25 01:36:41
【问题描述】:

我正在学习管理我的共享库,谷歌揭示了大量关于两个主要和次要版本数字的信息,但我正在查看的许多库都有 3 位数字,例如libsqlite3.so.0.8.6,第三位是多少?

提到了一个“句号”:

...soname 具有前缀lib'', the name of the library, the phrase.so'',后跟一个句点和一个版本号,该版本号在接口更改时递增... http://tldp.org/HOWTO/Program-Library-HOWTO/shared-libraries.html

但我无法解释这个周期数字是什么以及它的影响?

编辑:

libsqlite3.so.0.8.6
              | | |
_What's this?_| | |
_Major__________| |
_Minor____________|

【问题讨论】:

  • 句号是这个字符:. - 没有“句号”这样的东西。

标签: linux shared-libraries


【解决方案1】:

Here is a thread 来自另一个论坛(快速谷歌搜索)与一些关于命名的对话:

来自线程:

当有两个数字时,有一个主要版本和一个次要版本。 libncursesw.so.5.6 有主要版本 5 和次要版本 6;理论上 相同主要版本的任何次要版本都兼容 重新编译,因此链接到 libncursesw.so.5 的程序不会错过 如果您升级到 5.7 进行错误修复,那将是一个节拍。如果你有一个古老的 程序要求版本 4,您可以安全地安装 4.x 库 除了 5.x 之外,只有那个程序会使用它。

基本上,命名约定允许链接到库的程序具有三个级别的兼容性。程序可以选择链接库名称本身、特定的主编号或特定的major.minor 编号。这实际上取决于应用程序开发人员来确定什么是最有意义的。

您会注意到,通用和主要数字形式通常链接到最新的 major.minor 形式。根据库的需要,库可能包含其他版本号(例如/lib/ld-linux.so)。版本号仍然是从左到右进行的,越来越明确。

【讨论】:

  • 好的,但我的主要问题是关于第三位数字,正如我刚刚在我的问题中编辑的那样。那么第三个数字(前导数字?)是否构成名称的一部分,即使它在“.so”之后?
  • 已编辑答案...对于 sqlite,我认为不需要“0”,尽管它是默认生成的。因为 soname 实际上是sqlite3,表示主版本'3'。我没有专门研究过sqlite,但是我从其他库中看到了这种行为。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-27
  • 1970-01-01
  • 2021-01-27
  • 1970-01-01
相关资源
最近更新 更多