岩松です。
既にぐぐったりして解を見つけていると思いますが。
2011年4月11日12:52 koyo dng <koyo-dengyo@xxxxxxxxxxxxx>:
お世話になります。
共有ライブラリに対するパスは、コンパイル時、実行時にどのように参照されるのでしょうか?
記事によっては、1.コンパイル時にライブラリの中に、絶対パスが保存されると解釈できる記述があったり
また、2.実行時にlb.so.conf.dのなかの設定ファイルの内容を元に探すと書いてあったりします。
開発環境と、実行環境が違う場合
1.が正解なら、コンパイル時に実行環境のディレクトリ構造を作り必要がありますよね
その上で、libにコンパイラの検索パスを必要があると思います。
2.が正解なら、コンパイル時には、目的のライブラリにパスが通っていて
実行環境の、lb.so.conf.dの設定ファイルでライブラリのパスが通っていれば良いことになると思います。
両方とも正解で、
1は リンカのオプションで -rpath を付けると、指定したパスを 実行時のライブラリ検索パスに
追加します。koyo dng さんが書いているような問題が発生するので、Debianでは
rpathを含んだバイナリを
提供しないようにしています。
2は /etc/ld.so.cache に 共有ライブラリ検索のためのキャッシュがあります。
ldconfig -p で、キャッシュの内容を確認することができます。
岩松
--
Nobuhiro Iwamatsu
iwamatsu at {nigauri.org / debian.org}
GPG ID: 40AD1FA6