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_PATH
LD_LIBRARY_PATH
影響を与える環境変数。それするLD_LIBRARY_PATH
いつ参照してください他のライブラリに必要なライブラリを探す、基本ビルドで次の動作をシミュレートします。ld.so
。