内藤 様

鈴木@葛飾区です。

ご返信ありがとうございます。

> rtld のロジック的には rpath の指定により /usr/local/lib の下から
> libpq.so を検索してファイルが存在しているから見つかったとしてパス検
> 索を終了したけれども、
> 実際には 32bit ライブラリではないので読めなかったんだろうと思います。

ちょうどお返事をいただく直前に同じ話をやっと見つけたところでした。

https://lists.freebsd.org/pipermail/freebsd-stable/2012-May/067832.html

> /etc/libmap32.conf でマッピングし直すか、
> ports/packages の chrpath を使って rpath を書き換えれば動くのではな
> いでしょうか?

> あと蛇足ですが、 32bit ライブラリの読み込みパスを指定するには
> LD_32_LIBRARY_PATH を指定するのが正しいです。
> 今回の場合は rpath が優先されますので恐らく無意味でしょうけど・・・。

ずっと32bit版のみでしたのでLD_32_LIBRARY_PATHなんてのがあったのは今回
初めて知りました。

とりあえずいちばん簡単そうな LD_32_LIBRARY_PATH を試してみましたところ
どうもうまくいってしまいました。

man ld.soによると LD_LIBRARY_PATH_RPATH にyY1のいずれかがセットされい
る場合のみDT_RPATHをオーバライドするとあるので、動きが正しくないような
気はしますが、解釈の誤りでしょうか?

ちなみに、 readelfからの抜粋では以下のようになっていました。

# readelf -d /usr/local/lib/perl5/site_perl/5.8.9/mach/auto/DBD/Pg/Pg.so

Dynamic section at offset 0x2c824 contains 23 entries:
  Tag        Type                  Name/Value
 0x0000000f RPATH                Library rpath: [/usr/local/lib]


> なお、rpath 具体的な値は readelf -d <ファイル名> で確認してみてください。

これもありがとうございました。
---
すずき
_______________________________________________
freebsd-users-jp@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/freebsd-users-jp
To unsubscribe, send any mail to "freebsd-users-jp-unsubscr...@freebsd.org"

メールによる返信