如何从 SONAME 获取库路径?

How to get library path from SONAME?

我正在开发 ldd-python 脚本。

据我所知,ELF 二进制文件 本身只有关于库的 SONAME 的信息。

如何通过这个 SONAME 获取库的完整路径?

我想像这个原始的 ldd 结果一样打印:

$ ldd test
    libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xb7d28000)

ldd 在特殊模式 (LD_TRACE_LOADED_OBJECTS) 中通过 运行ning ld.so 打印此信息。所以你唯一的选择是在内部 运行 ldd 并解析它的输出或尝试在 Python 中模拟它的行为(但请注意,这样的模型必须非常复杂,特别是一旦你得到到 setuid 二进制文件)。