From: YOKOYAMA Takehiro Date: 2000-10-27T04:02:23+09:00 Subject: [ruby-list:25629] Re: require で so をロードするときの環境変数について In message "[ruby-list:25622] require でso をロードするときの環境変数について", Kengo Nakajima wrote at 26 Oct, 2000... >ruby では、 .so ファイルをrequire するときは、 dlopen を使っていますが、 >dlopenは環境変数 LD_LIBRARY_PATH に設定されているパスをもとに検索を >します。なので、require する前に、環境変数をいじって > >ENV["LD_LIBRARY_PATH"] = "/home/ringo/some/lib" >require "hogehoge.so" > >のようにすれば、正しくロードされるかと思いきや、hogehoge.so は >ロードされません。 私もここ2日ほど同じ問題で詰まり、しかもウェブのCGIプログラムなので、 .cshrc あたりで設定するという手も使えなかったのですが、 /etc/ld.so.conf に登録するという手段で解決しました。 詳しくは「man ldconfig」で調べればわかると思います。 >最終的には、rubyのスクリプトの中でrequire する前に、 >何とかして環境変数を指定してrequireが成功するようにしたいです。 私も一時そういうことを考えたのですが、結局、rubyの中で環境変数を操作する 必要はありませんでした。 それにしても、失敗したときのメッセージが File not found - /usr/local/......../hoge.so というものなので、ファイル hoge.so がrubyから見えないのかと思って、 chmodとかchrootとか、そっち方面を最初は疑ってしまいました。 -- 横山岳浩 tac@amris.co.jp