
Допустим, у меня есть двоичный файл 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
- это подробное указание цепочек зависимостей.