ldがLD_LIBRARY_PATHを無視する場合はありますか?

ldがLD_LIBRARY_PATHを無視する場合はありますか?

ld先ほど説明できない小さな問題に直面しました。私のホームディレクトリにライブラリをコンパイルしてすべてをインストールしたとしましょう~/root。共有ライブラリファイルは次の場所にあります~/root/usr/local/lib/libmylib.so

~/root/usr/local/libリンカーの検索パスにないので、いつものLD_LIBRARY_PATHように設定しました。

LD_LIBRARY_PATH="$HOME/root/usr/local/lib"
export LD_LIBRARY_PATH

そしてライブラリが利用可能であることを確認してください。

$ ls $LD_LIBRARY_PATH/libmylib.so
/home/me/root/usr/local/lib/libmylib.so

今実行すると:

$ ld -lmylib --verbose

最後の数行には、次の内容を含める必要があります。

attempt to open /home/me/root/usr/local/lib/libmylib.so succeeded
-lmylib (/home/me/root/usr/local/lib/libmylib.so)

私の場合を除いて、そうではありませんでした。ld照会はまったく行われません/home/me/root。の内容がLD_LIBRARY_PATH出力にまったく表示されません。ldこれは、変数が恥ずかしく無視されたことを示します(実際には、私のディレクトリはSEARCH_DIR出力の前には表示されません)。

しかし、以下を実行すると:

$ ld -L $LD_LIBRARY_PATH -lmylib --verbose

上記の行を得て、すべてがうまくいった。これは、ライブラリまたはインストールパスに問題がないことを意味します。

ld無視できる状況はありますかLD_LIBRARY_PATH?確認しましたが、env他のリンカー関連変数(、、、、RPATHすべてLIBRARY_PATHテストLD_RUN_PATH済み)が見つかりませんでした。以下の設定は、いくつかの(他の)ディレクトリを登録する以外は/etc/ld.so.*何もしないようです。このマシンは、Scientific Linux 7.4、gcc 6.4、ld 2.25.1を実行します。問題のライブラリはですlibxml++-3.0

ベストアンサー1

私が知っている限り、少なくともコマンドラインで指定されたライブラリはldリストにありません。LD_LIBRARY_PATHLD_LIBRARY_PATH影響を与える環境変数。それするLD_LIBRARY_PATHいつ参照してください他のライブラリに必要なライブラリを探す、基本ビルドで次の動作をシミュレートします。ld.so

おすすめ記事