2008年2月18日

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

なかだです。

At Sat, 9 Feb 2008 23:33:40 +0900,
Koga Atsushi wrote in [ruby-list:44600]:
> 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


HP-UXのldでは-Rが実行時のロードパス指定ではないようですね。
http://docs.hp.com/ja/B2355-90732/ch03s02.html#movinglibraries-b
によると、+bが相当するような感じです。

以下のパッチでどうでしょうか。


Index: configure.in
===================================================================
--- configure.in (revision 15513)
+++ configure.in (working copy)
@@ -1055,4 +1055,13 @@ if test "$with_dln_a_out" != yes; then
fi

+
+ AC_ARG_ENABLE(rpath,
+ [ --disable-rpath embed run path into extension libraries.],
+ [enable_rpath=$enableval], [enable_rpath="$rb_cv_binary_elf"])
+ if test "$enable_rpath" = yes; then
+ LIBPATHFLAG=" -L%1\$-s"
+ ${RPATHFLAG=" ${linker_flag}-R%1\$-s"}
+ fi
+
case "$target_os" in
hpux*) DLDFLAGS="$DLDFLAGS -E"
@@ -1060,4 +1069,7 @@ if test "$with_dln_a_out" != yes; then
XLDFLAGS="$XLDFLAGS -Wl,-E"
: ${LIBPATHENV=SHLIB_PATH}
+ if test "$rb_cv_prog_gnu_ld" = no; then
+ RPATHFLAG=' +b %1$-s'
+ fi
rb_cv_dlopen=yes;;
solaris*) if test "$GCC" = yes; then
@@ -1169,12 +1181,4 @@ if test "$with_dln_a_out" != yes; then
esac
AC_MSG_RESULT($rb_cv_dlopen)
-
- AC_ARG_ENABLE(rpath,
- [ --disable-rpath embed run path into extension libraries.],
- [enable_rpath=$enableval], [enable_rpath="$rb_cv_binary_elf"])
- if test "$enable_rpath" = yes; then
- LIBPATHFLAG=" -L%1\$-s"
- RPATHFLAG=" ${linker_flag}-R%1\$-s"
- fi
fi
AC_SUBST(LINK_SO)

--
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
中田 伸悦

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




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