如何跟踪库加载?

如何跟踪库加载?

我的程序依赖于链接到 libboost 1.67 的库,该库安装在系统中。当我启动它时,出现libboost_system.so.1.58不存在的错误。LD_PRELOAD并且LD_LIBRARY_PATH未设置。

lddtree执行不会将此库显示为依赖项,但ldd会显示。

如何追踪需要该库的位置?

答案1

如果在 GNU 系统上,请尝试使用以下命令运行您的应用程序:

LD_DEBUG=libs your-application

请参阅 参考资料 了解LD_DEBUG=help更多选项 或man ld.so

答案2

如果程序使用 dlopen() 手动加载 libboost_system,您可能可以使用以下命令找到它在哪里执行此操作跟踪查看它是否正在调用 dlopen(),也许 gdb 在调用 dlopen() 时设置断点,然后生成堆栈回溯。 (也可以看看拉特拉斯.)

相关内容