跟踪共享库中符号的来源

tracking origin of symbols in shared libraries

我有一个共享库(更具体地说是一个本地 python 模块),它引用了其他库中的一些符号。 ldd -r 显示哪些库符号无法在系统上动态解析。示例:

# ldd -r /usr/lib/python3.4/site-packages/_selinux.cpython-34m.so
…
undefined symbol: selabel_digest        (/usr/lib/python3.4/site-packages/_selinux.cpython-34m.so)

现在我有一个类似的系统,其中的链接似乎可以正常工作,ldd 不会报告任何未解析的符号。
我如何跟踪某些符号在该系统上的解析方式和来源(共享库的文件名)?我希望这可以帮助我在第一个系统上获得正确的链接。

How can I track how and from which sources (filename of the shared library) certain symbols are resolved on that system?

在"working"系统上,运行

LD_DEBUG=symbols,bindings ldd -r _selinux.cpython-34m.so |&
grep selabel_digest