首页 > 解决方案 > 跟踪 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 版本?

标签: linuxlibpngldd

解决方案


推荐阅读