linux - 为什么 NSS 模块在 Linux 上必须以 .so.2 结尾?

标签 linux strace nss

我已经为 Red Hat Linux 构建了一个名称服务交换模块。

使用 strace,我确定操作系统在各种目录中查找库,但仅查找扩展名为 .so.2 的文件(例如 libnss_xxx.so.2,其中 xxx 是服务名称)

为什么它不查找 .so.so.1 库?是否可以保证它不会停止寻找 .so.2 库并在将来开始寻找 .so.3 库?

编辑:http://tldp.org/HOWTO/Program-Library-HOWTO/shared-libraries.html , 表示 2 是“每当界面更改时递增的版本号”。 所以我猜:

  • NSS 版本需要库的版本 2。
  • 具有更新的 NSS 的操作系统更新可能需要不同的版本号。

谁能证实这是不是真的?

最佳答案

你的假设通常是正确的,稍作修改:

  • NSS 版本需要接口(interface)版本为 2 的库
  • 具有更新的 NSS 的操作系统更新可能需要不同的版本号。

接口(interface)的版本不一定需要随着库的版本而改变,即较新版本的库可能仍提供相同的接口(interface)。

关于linux - 为什么 NSS 模块在 Linux 上必须以 .so.2 结尾?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13527936/

相关文章:

c - 生成漂亮的和/或更少的系统密集型测量点

certificate - certutil:函数失败:SEC_ERROR_LEGACY_DATABASE:证书/ key 数据库采用旧的、不受支持的格式

linux - 如何拆分 CSV 文件以保留第一列?

linux - 当程序打开特定文件时 gdb 中断

PHP Curl(带 NSS)在连接到 https 时可能使用 SSLv3 而不是 TLS

PHP cURL,使用 NSS,忽略 CAPATH

linux - Android Studio 卡在执行 Gradle 任务

linux - 将匹配模式的第一个字母大写

python - 在集群中启动和停止进程