From: WATANABE Tetsuya Date: 1998-08-12T15:22:22+09:00 Subject: [ruby-list:9079] Re: ruby 1.1c2 released HP-UX 10.20 の話です。とりあえずお知らせだけ。 snprintf.c が簡単にはコンパイルが通りません。コマ ンドラインで次のようにすること *と* cc -O -Aa -D_INCLUDE_POSIX_SOURCE -D__hpux__ -c missing/snprintf.c fpos_t の typedef を無効にするとコンパイル可能で す。 別件のわたなべさんのパッチを含めるとこんな感じです。 ------------------------------ $ diff -u snprintf.c.org snprintf.c --- snprintf.c.org Wed Aug 12 11:28:44 1998 +++ snprintf.c Wed Aug 12 14:44:38 1998 @@ -62,6 +62,9 @@ #if defined(__STDC__) # include +# if !defined(__P) +# define __P(x) x +# endif #else # undef __P # define __P(x) () @@ -93,7 +96,9 @@ * boundaries. THIS IS A CROCK, but for now there is no way around it. */ #if !defined(_ANSI_SOURCE) && !defined(__STRICT_ANSI__) +#if !defined(__hpux__) typedef off_t fpos_t; +#endif #else typedef struct __sfpos { char _pos[8]; @@ -347,7 +352,9 @@ #define u_int unsigned int #include +#if !defined(__CYGWIN32__) #include +#endif #include #if defined(__STDC__) ------------------------------ cc のオプション -Aa は ANSI-C モードで、ヘッダと か cpp のシンボルにも影響を与え、__hpux__ などの 設定が使えないので、-D__hpux__ を加えないとだめで す。 この -Aa オプションでは UNIX 系の拡張部分なども使 えないので、Ruby 自身のコンパイルのは使えません。 コンパイルの手順は、make する前に、「手動で」 snprintf.c を先にコンパイルして、make を実施しま した。configure が生成した Makefile ではコンパイ ルできません(gcc/HP C ともに)。 snprintf.c を一発でコンパイルできればいいのですが、 ヘッダ関係がかなり影響を与えているので、-Aa を外 すとうまく行きません(gcc はなおさらダメでした)。 ちょっとややこしい感じです。 Linux では snprintf.c のコンパイルは必要ありませ んが確認してみました。glibc の環境はうまく行きま したが、glibc 以外の環境だと gcc -c でコンパイル がうまく行きません(手元のものは TurboLinux 1.4J)。 自宅の glibc 環境(TurboLinux 2.0J)ではそのままコ ンパイルできたと思います。 ということで、引っかかりました。 -- WATANABE Tetsuya HP Japan e-mail tetsu@jpn.hp.com