web-dev-qa-db-ja.com

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

私は偶然、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変数が表示されないのはなぜですか?

15
calavera.info

はい、明示的にLD_LIBRARY_PATHを指定することは通常ありません。 ldconfig(8) および ld-linux(8) および rpath についてもお読みください。 ldconfig/etc/ld.so.cacheではなくLD_LIBRARY_PATHを更新することに注意してください。実行可能ファイルのrpath-Wl,-rpath,directoryリンク時にgccに渡されます。

LD_LIBRARY_PATHが必要な場合(ただし、おそらく必要ない場合)は、自分で設定します(例:~/.bashrc)。

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

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

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

22