At Sat, 07 Jul 2001 00:23:05 +0900,
nobu.nakada / nifty.ne.jp wrote:
>   RedHat Linux 7.1 だと、。

 ご報告ありがとうございます。

> In file included from digest.h:18,
>                  from digest.c:31:
> /usr/include/md5.h:27: parse error before `UINT4'
> /usr/include/md5.h:27: warning: no semicolon at end of struct or union
> /usr/include/md5.h:28: warning: data definition has no type or storage class
> /usr/include/md5.h:30: parse error before `}'
> /usr/include/md5.h:30: warning: data definition has no type or storage class
> /usr/include/md5.h:32: parse error before `PROTO_LIST'
> /usr/include/md5.h:33: parse error before `PROTO_LIST'
> /usr/include/md5.h:35: parse error before `PROTO_LIST'
> /usr/include/md5.h:37: parse error before `PROTO_LIST'
> digest.c:250: parse error before `*'
> digest.c: In function `MD5End':
> digest.c:255: `pctx' undeclared (first use in this function)
> digest.c:255: (Each undeclared identifier is reported only once
> digest.c:255: for each function it appears in.)
> digest.c:258: `hexdigest' undeclared (first use in this function)
> make: *** [digest.o] エラー 1
> 
>   digest.h の #include <md5.h> の前に #include <md5global.h>を
> 追加したところ、MD5が一致しません。
> 
> gcc -fPIC -g -O2 -fPIC  -DHAVE_CONFIG_H -DHAVE_MD5 -DHAVE_SHA1 -DHAVE_RMD160 -I/usr/lib/ruby/1.6/i686-linux -I/usr/include -DHAVE_MD5_H -DHAVE_MD5_H -DHAVE_MD5_INIT -DHAVE_SHA_H -DHAVE_SHA1_INIT -DHAVE_RIPEMD_H -DHAVE_RIPEMD160_INIT   -I/usr/include/openssl -c digest.c
> gcc -shared  -L/usr/lib -L/usr/lib  -o digest.so digest.o -L. -lruby -lssl -lcrypto -lc 
> 0422baef86ce8a1b7853244f1b5ec48e
> 86f7e437faa5a7fce15d1ddcb9eaeaea377667b8
> 0bdc9d2d256b3ee9daae347be6f4dc835a467ffe

 むむう。。やっぱりシステムから検出するのはやめた方がいいかなあ。
いろいろマクロがかぶったりして危険な感じですね。

 そもそも MD5 の関数名は、システムやライブラリによって名前から
引数の順序から構造体のメンバ名からバラバラなので、見ての通り
extconf.rb と digest.h で相当無理をしています。しかし、次に追加
しようと思っている SHA2 なども考慮するとぜんぜん割に合わない気が
してきたので、移植性の高いものを添付してみんなそれを使うように
することにします。

-- 
                     /
                    /__  __            Akinori.org / MUSHA.org
                   / )  )  ) )  /     FreeBSD.org / Ruby-lang.org
Akinori MUSHA aka / (_ /  ( (__(  @ iDaemons.org / and.or.jp

"Freeze this moment a little bit longer, make each impression
  a little bit stronger..  Experience slips away -- Time stand still"