0

根据 /bin/chgrp 上的 ldd linux 命令,执行它的唯一必要库是 libc.so。当使用 gdb 调试 chgrp 时,我注意到实际加载了其他库,例如:

/lib/x86_64-linux-gnu/libnss_compat.so.2
/lib/x86_64-linux-gnu/libnsl.so.1
/lib/x86_64-linux-gnu/libnss_nis.so.2
/lib/x86_64-linux-gnu/libnss_files.so.2

为什么这些库不在 ldd 输出中进行比较?

另外:它们没有在 libc.so 的 DYNAMIC 部分进行比较,它们是如何定位和加载的?(我用 readelf 检查了 libc.so 的 DYNAMIC 部分,但这些库不存在)

4

1 回答 1

3

运行程序时,各种libnss库由libc、 via动态加载。dlopen加载哪些库由/etc/nsswitch.conf. 有关详细信息,请参阅名称服务切换文档

于 2015-06-29T03:43:08.547 回答