Узнайте, как библиотека связана с двоичным файлом через другую связанную библиотеку.

Узнайте, как библиотека связана с двоичным файлом через другую связанную библиотеку.

Допустим, у меня есть двоичный файл test, и он использует общие библиотеки.

a.so
b.so
c.so

У меня возникли проблемы с запуском бинарного файла, потому что одна из связанных библиотек ссылается на другую библиотеку, d.soкоторая, похоже, является виновником. Однако я не знаю, какая именно библиотека ссылается на нее, поскольку на самом деле там около 20 библиотек вместо 3, и очень долго перебирать их все. lddдает вам только список библиотек, которые напрямую ссылаются на бинарный файл.

Вдобавок ко всему, похоже, что есть не один уровень косвенности, а несколько. Другими словами, похоже, что есть что-то вроде a.so -> x.so -> blabla.so -> d.so.

Есть ли какой-то разумный способ визуализировать всю диаграмму зависимостей или как найти точную цепочку зависимостей, ведущую к библиотеке d.so?

Другими словами, я хочу что-то вроде этого:

a.so -> something.so
     -> second.so
     -> third.so
b.so -> x.so -> blabla.so -> d.so
             -> stuff.so
c.so -> something.else -> yetanotherlib.so

или упрощенная версия, где я бы сказал, что хочу найти, как d.soсвязан с двоичным файлом, и он бы выдал

a.so -> x.so -> blabla.so -> d.so

Я надеюсь в этом есть смысл.

решение1

То, что вам нужно, это ldd -v- это подробное указание цепочек зависимостей.

Связанный контент