From: WATANABE Tetsuya Date: 2003-03-04T11:11:05+09:00 Subject: [ruby-dev:19716] [1.8.0 preview2] HP-UX 11.11 渡辺哲也です。 1.8.0 preview2 を HP-UX 11.11 で試してみました。 問題点が二つでています。 o missing/strftime.c o ld のオプション これ以外に inline の使いかたが HP-UX では対応してい ないものなので #define inline を追加しています。 まず missing/strftime.c が選択されるのですが、これが うまくコンパイルできません。altzone をサポートしてい ないことと、timezone 変数の型のミスマッチがあります (このミスマッチを解消しても altzone がないので使えま せん)。 HAVE_TZNAME になっていますが、これが想定されているものとあってい ないのかな。 CVS の最新のソースコードでは、missing/strftime.c は、 選択されずコンパイルされないので、いままで確認してい ませんでした。そのため気がつくのがいまごろ... autoconf は 2.53 を使っています。現在 Ruby では 2.57 を使っているようですね。missing/strftime.c の選択は、 この辺の差でしょうか。 もう一つあります。 拡張ライブラリ作成時の ld のオプションが問題です。こ れは missing/strftime.c を使わないようにして確認しま した。 今回コンパイルできない場合 ld -b -Wl,-E -E -L"/t/src/ruby-1.8.0-20030303" -L"/t/lib" -o curses.sl curses.o -lcur_colr -ldld -lcrypt -lm -lc 以前コンパイルできた場合 ld -b -E -L/t/src/ruby-1.7.3-20021002 -L/t/lib -o curses.sl curses.o -lcur_colr -lc ld に対して「-Wl,-E」を渡していますが、これはフロン トエンドとして cc のときに ld へオプションを渡すため のオプションです。直接 ld に渡してもエラーになってし まいます。 configure 時に次のエラーがでています。 ------------------------------ checking whether the linker is GNU ld... cc: warning 422: Unknown option "-" ignored. cc: warning 422: Unknown option "i" ignored. cc: warning 422: Unknown option "-nt-prog-name=ld" ignored. no ------------------------------ とりあえずの対応として、次のようにコメントにしてしま うことで、対応しました。 ------------------------------ $ diff -u configure.org configure --- configure.org 2003-01-21 17:06:58.000000000 +0900 +++ configure 2003-03-04 11:05:04.000000000 +0900 @@ -11988,7 +11988,7 @@ case "$target_os" in hpux*) DLDFLAGS="-E" LDSHARED='ld -b' - LDFLAGS="-Wl,-E" +# LDFLAGS="-Wl,-E" rb_cv_dlopen=yes;; solaris*) if test "$GCC" = yes; then LDSHARED='$(CC) -Wl,-G' ------------------------------ これで make test まで OK でした。 対応のまとめ o missing/strftime.c を使わない o configure で hpux 用の LDFLAGS をコメントアウト