必要な共有ライブラリ(他のスクリプトは未使用のライブラリを報告します)を実行してインポートしますが、特定の項目ldd
(表示されないプロジェクトの一部などlibnss_*
)を使用するスクリプトがあります。glibc
この種の依存関係をどのように見つけることができますか?
ありがとう
答え1
簡単に言えば、あなたはできません。
ライブラリのロードは、lddによって検出されたハードコーディングされたライブラリ名を使用してプログラムを初期化するときに実行できます。
ただし、すべてのプログラムは実行時に任意のライブラリからシンボルをロードでき、そのライブラリの名前も実行時に計算できます。最も明確なユースケースはプラグインシステムです。
したがって、ライブラリをロードするユースケースでは、プログラムを実行しないとそれを知る方法はありません(たとえば、イメージエディタがある場合は、実際に試す前にjpegファイルをロードするためのライブラリをロードすることに決めることができます)。ファイル)。
実行時にロードされたすべてのライブラリを知ることは不可能な問題であるため、パッケージングスクリプト(redhat / fedora用のrpmパッケージを構築するために必要な.specファイルなど)では、パッケージャが自動的に検出できない依存関係を手動で指定する必要があります。