2008年2月 9日

[ruby-list:44600] HP-UX 11.23 ia64の拡張ライブラリビルドでなぜ -R'RPATHFLAG'がつくの?

皆様こんにちわ。kogと申します。
Rubyの拡張ライブラリをビルドするときにどうしてもよくわからないので
どのあたりから調査したらいいものかどなたか教えていただけませんか。

環境:
$ ruby -v
ruby 1.8.6 (2007-12-03 patchlevel 113) [ia64-hpux11.23]

OSは
HP-UX 11.23 ia64 です。
以下の部分はHPtestdrive
http://h50146.www5.hp.com/partners/testdrive/
を利用してテストしました。

現象:
ビルド中に
ld: Bad text origin argument: でこける。

fastthread-1.0.1でやってみました。
$ ruby setup.rb
---> ext
---> ext/fastthread
/house/kogkog/local/bin/ruby
/house/kogkog/src/fastthread-1.0.1/ext/fastthread/extconf.rb
creating Makefile
<--- ext/fastthread
<--- ext
---> ext
---> ext/fastthread
make
ld -b -o fastthread.sl fastthread.o -L'.'
-L'/house/kogkog/local/lib' -R'/house/kogkog/local/lib' -L. -E -ldld
-ldl -lm -lc
ld: Bad text origin argument: /house/kogkog/local/lib
Fatal error.
*** Error exit code 1

この、
-R'/house/kogkog/local/lib'
がなければこけないようなので、生成された ext/fastthread/Makefile
を編集して
 LIBPATH = -L'.' -L'$(libdir)'
にしてみると、すんなり通ってしまいます。

$ make
ld -b -o fastthread.sl fastthread.o -L'.'
-L'/house/kogkog/local/lib' -L. -E -ldld -ldl -lm -lc
$

rubyのビルドは
http://www.ruby-lang.org/ja/install.cgi?cmd=view;name=HP-UX
を参考に、
$ CFLAGS="-O -D_XOPEN_SOURCE_EXTENDED" ./configure --without-gcc
--prefix=$HOME/local
$ gmake
$ gmake install
で行いました。--without-gccとしたのは、実際に使いたいマシンでは
gccがなく、この再現試験をやってみた HPtestdrive のマシンには
gccがあって、どうもgccがあるときはそっちを優先するようなので
つけています。

不思議なのは、ruby添付の拡張ライブラリ(socketとか)は
ちゃんとインストールまでできてるように見えるのに、

$ ruby -rsocket -e 0

あとで ruby extconf.rb で生成すると Makefileに -Rが設定されることです。
この違いはなんなのでしょう?

一応おいかけてみたところ、lib/ruby/1.8/mkmf.rb のメソッドで決定され、
def libpathflag(libpath=$DEFLIBPATH|$LIBPATH)
libpath.map{|x|
case x
when "$(topdir)", /\A\./
LIBPATHFLAG
else
LIBPATHFLAG+RPATHFLAG
end % x.quote
}.join
end

lib/ruby/1.8/ia64-hpux11.23/rbconfig.rb を見ると、
CONFIG["LIBPATHFLAG"] = " -L'%1$-s'"
CONFIG["RPATHFLAG"] = " -R'%1$-s'"
のようになっているから、のようではあるのですが。
rbconfig.rb を直接編集し
CONFIG["RPATHFLAG"] = ""
とすると、当然Makefileには 該当部分はふくまれなくなり、
拡張ライブラリのビルドは通ることは通るのですが、
こんなことしていいのか?心配ではあります。

この現象を回避するにはどうしたらいいでしょうか...?

以上です。

投稿者 xml-rpc : 2008年2月 9日 23:33
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/69641
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。