我已经为 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/