我为 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 是“每当接口(interface)更改时递增的版本号”。
所以我猜:

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

  • 有人可以确认这是真的吗?

    最佳答案

    您的假设通常是正确的,只需稍作修改:

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

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

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

    10-15 12:17