linux - 跟踪 Linux 上的嵌套库依赖项
问题描述
我的应用程序在 ubuntu 18.04.03 上运行,链接到多个第三方库,包括 libpng16.so。根据堆栈跟踪,我的应用程序由于 libpng.so 中的版本不匹配而崩溃:
#2 0x00007ffff08492c7 in png_error (png_ptr=0x555557f47fe0, error_message=error_message@entry=0x7ffff0dd9cb8 "Incompatible libpng version in application and library") at libpng/pngerror.c:80
我认为这意味着我的应用程序与另一个版本的 libpng.so 间接链接 - 对吗?'ldd myApp' 显示对 libpng16.so 的依赖,但没有其他 libpng 版本。当我从链接中删除特定第三方库之一 - libgmt.so - 时,我的应用程序不再崩溃。所以我假设 libgmt.so 引用了另一个版本的 libpng.so。我运行“ldd /usr/local/lib/libgmt.so”,它没有显示对 libpng.so 的任何依赖,但显示了对 57 个其他库的依赖。我认为'ldd'显示递归依赖。如何找到哪个库依赖于旧的 libpng.so 版本?
解决方案
推荐阅读
- python - 如果在pyhton中为真,如何将列名从多列合并为一?
- excel - (VBA)删除同一区域中的重复单元格
- excel - 添加工作日
- c++ - 此函数给出 SIGSEGV 错误。任何人都可以纠正并告诉他们问题吗?C++
- python - 使用 uproot 将 ROOT 文件读入 daskframe 时自动设置 dtypes
- angular - 在 ngx-bootstrap Datepicker 中动态设置最大日期
- r - 使用 R 更新数据框中选定行中的值
- html - 选中复选框时检索复选框数据以及文本框数据
- python - 两个数据帧之间的比较?
- gremlin - tinkerpop gremlin clear 控制台不工作