Descubra cómo se vincula una biblioteca a un binario a través de otra biblioteca vinculada

Descubra cómo se vincula una biblioteca a un binario a través de otra biblioteca vinculada

Digamos que tengo un binario testy usa bibliotecas compartidas.

a.so
b.so
c.so

Tengo problemas para ejecutar el binario, porque una de las bibliotecas vinculadas vincula otra biblioteca d.soque parece ser la culpable. Sin embargo no sé qué biblioteca es la que lo vincula, ya que en realidad hay como 20 bibliotecas en lugar de 3 y lleva mucho tiempo revisarlas todas. lddsolo le brinda la lista de bibliotecas que el binario vincula directamente.

Además de eso, parece que no hay un nivel de indirección, sino varios. En otras palabras, parece que hay algo así a.so -> x.so -> blabla.so -> d.so.

¿Existe alguna forma inteligente de visualizar el diagrama completo de dependencias o de cómo encontrar la cadena de dependencia exacta que conduce a la biblioteca d.so?

En otras palabras, lo que quiero es algo como esto:

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

o una versión simplificada donde diría que quiero encontrar cómo d.soestá vinculado al binario y escupiría

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

Espero que esto tenga sentido.

Respuesta1

Lo que desea es ldd -v: esto indicará detalladamente las cadenas de dependencia.

información relacionada