Descubra como uma biblioteca está vinculada a um binário por meio de outra biblioteca vinculada

Descubra como uma biblioteca está vinculada a um binário por meio de outra biblioteca vinculada

Digamos que eu tenha um binário teste ele use bibliotecas compartilhadas

a.so
b.so
c.so

Tenho problemas para executar o binário, porque uma das bibliotecas vinculadas vincula outra biblioteca d.soque parece ser a culpada. Porém não sei qual biblioteca é a que o vincula, pois na realidade existem cerca de 20 bibliotecas em vez de 3 e é muito demorado passar por todas elas. lddfornece apenas a lista de bibliotecas que o binário vincula diretamente.

Além disso, parece que não existe um nível de indireção, mas vários. Em outras palavras, parece que existe algo parecido a.so -> x.so -> blabla.so -> d.so.

Existe alguma maneira inteligente de visualizar todo o diagrama de dependências ou de encontrar a cadeia de dependência exata que leva à biblioteca d.so?

Em outras palavras, o que eu quero é algo assim:

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

ou uma versão simplificada onde eu diria que quero encontrar, como d.soestá vinculado ao binário e cuspiria

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

Espero que isto faça sentido.

Responder1

O que você quer é ldd -v- isso indicará detalhadamente as cadeias de dependência.

informação relacionada