ライブラリが別のリンクされたライブラリを介してバイナリにリンクされる方法を確認します

ライブラリが別のリンクされたライブラリを介してバイナリにリンクされる方法を確認します

バイナリがありtest、それが共有ライブラリを使用しているとします

a.so
b.so
c.so

バイナリの実行に問題があります。リンクされたライブラリの 1 つd.soが、原因と思われる別のライブラリにリンクしているからです。ただし、実際には 3 つではなく 20 のライブラリがあり、すべてを調べるのに非常に時間がかかるため、どのライブラリがリンクしているのかわかりません。バイナリがldd直接リンクしているライブラリのリストのみが表示されます。

それに加えて、間接レベルは 1 つではなく複数あるようです。言い換えると、次のようなものがあるようです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、依存関係チェーンを詳細に示すことです。

関連情報