LD_LIBRARY_PATH変数が環境にないのは正常ですか?


15

偶然にも、私のDebian JessieにはLD_LIBRARY_PATH変数がありません(正確にprintenv | grep LDは、リンカに関連するものは何も表示されず、何echo "$LD_LIBRARY_PATH"も表示されません)。

これは、xターミナルエミュレータ(setgidによりクリアされる可能性があります)および基本ターミナル(Ctrl+Alt+F1)の場合です。

私はそれLD_LIBRARY_PATH が悪いと思われるかもしれないので、Debianはそれをどういうわけかブロックするかもしれませんが、その一方で/etc/ld.so.conf.d/、に追加されるディレクトリを含むいくつかのファイルがありますLD_LIBRARY_PATH。私のrcファイル(私が知っている)はどれも混乱しませんLD_LIBRARY_PATH

LD_LIBRARY_PATH変数が表示されないのはなぜですか?

回答:


22

はい、明示的なを持たないのは正常ですLD_LIBRARY_PATH。また、お読みにldconfig(8)LD-linuxの(8)とについてRPATHを。お知らせそのldconfigアップデート/etc/ld.so.cache、ではありませんLD_LIBRARY_PATH。リンク時に渡されるディレクトリを使用して、実行可能ファイルのrpathを明示的に設定する場合があります。-Wl,-rpath,gcc

必要な場合LD_LIBRARY_PATH(ただし、おそらくそうすべきではありません)、自分で設定します(例:) ~/.bashrc

システム全体の設定が必要な場合は、たとえば、すべてのライブラリのインストール後に追加/usr/local/lib//etc/ld.so.confて実行することを検討できます ldconfig

AFAIK $LD_LIBRARY_PATHは、execve(2)の後の動的リンカーld-linux.so(およびそれを使用するdlopen(3))によってのみ使用されます。ldd(1)も参照してください。

詳細については、Drepperの共有ライブラリの作成方法を参照してください。


それは私の間違いでしたが、私はLD_LIBRARY_PATHがrunning の製品だと思っていましたldconfig。一方、それはldconfig の入力であり、のファイルと一緒です/etc/ld.so.conf
calavera.info

1
私の感じでは、ldconfig使用しないでください$LD_LIBRARY_PATH(これはld-linux.so時間にのみ使用されます)
バジルスタリンケビッチ

3
@ calavera.infoどちらでもありません。動的リンカーは、実行時の出力LD_LIBRARY_PATH とともに使用ldconfigします。ldconfig使用も変更もしませんLD_LIBRARY_PATH
ホッブズ

「クラスパス」が実質的に動的リンクの唯一の構成であるJavaに時間を費やすことによって、おそらく完全に台無しになっていることがわかります。すべてが明確になったようです。どうもありがとう。
calavera.info
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.