一部のディストリビューションはあり、/lib64
一部は/lib/x86_64-linux-gnu
あり、おそらく他の形式があります。 Bashでこれを決定する統一された方法はありますか?
答え1
まず、指定されたパスの宛先を特定する必要があります。次のいずれかです。
- インストールされているライブラリーを検索する場所。
- リンカまたはランタイムローダに表示されるようにライブラリをインストールする場所。
- 展開ポリシーに準拠するためにライブラリをどこにインストールする必要がありますか?
(3)の場合、唯一の真実ソースは、人間が読める文書である配布ポリシーの説明です。どの位置が好ましい場所であり、どの位置が以前の位置であるかわからないため、キャッシュなどでこれを確認できません。/etc/ld.so.conf
ライブラリを計算してヒントを取得できますが、これは間違いなくシェルスクリプトでは機能しません。ldconfig
(1)と(2)の場合は読み、解釈します/etc/ld.so.conf
(ただし、他のファイルやディレクトリの内容へのワイルドカード参照が含まれることが多いため、これは些細なことではありません)。ldconfig -p
リストされたディレクトリの出力を解析して累積することもできます。ただし、既存のライブラリとの競合の可能性とライブラリセットを変更した後にldconfigキャッシュを再作成する必要があることに注意してください。
答え2
一般に、この情報はを読んで見ることができます/etc/ld.so.conf
。このファイルには、システムに他のファイルを含めることができます/etc/ld.so.conf.d
。
複数のディレクトリが検索されます。さらに、これはld.so
バイナリに組み込まれており、特定のアーキテクチャとABIに対して通常均一な動的リンカーへのパスには影響しません。