私は偶然、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
変数が表示されないのはなぜですか?
はい、明示的に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の 共有ライブラリの書き方 を参照してください。