Отслеживание зависимостей вложенных библиотек на Linux - PullRequest
0 голосов
/ 06 апреля 2020

Мое приложение работает на 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. Когда я удаляю одну из указанных сторонних библиотек c - libgmt.so - из ссылки, мое приложение больше не падает. Поэтому я предполагаю, что libgmt.so ссылается на другую версию libpng.so. Я запускаю 'ldd /usr/local/lib/libgmt.so', который НЕ показывает никакой зависимости от libpng.so, но показывает зависимость от 57 других библиотек. Я думал, что 'ldd' показывает рекурсивные зависимости. Как узнать, какая библиотека зависит от этой более старой версии libpng.so?

...