わたなべさん情報ありがとうございます。
おかげさまで Make は無事通るようになりました。

ところが make test で以下のようなエラーが発生してまともに
動作しません。
環境は NT4+SP5, VC++5 or cygwin1.dll B20.1+gcc egcs-2.91.57 
です。
もし助言があればよろしくお願いします。


エラーは cygwin では make 後の、make test から、
win32 では nmake 後2回は正常でその後の実行から発生します。

ruby.exe -e 'p "hello!"'
のような簡単なプログラムでは起きませんが、make test の実行
や、Ctrl+C による中断で発生します。

エラー内容はメモリアクセス違反で
「"0x6105afaa" の命令が "0x0a031004" のメモリを参照しました。…」
のメッセージ後、DevStudio でデバグに入ると
「ハンドルされていない例外は ruby.exe (CYGWIN1.DLL) にあります:…」
と出ます。

この時のスタックコールは下の通りです。

CYGWIN1! 6105afaa()
(省略)
CYGWIN1! 6100b36b()
RUBYCW! 6d107923()
(省略)
RUBYCW! 6d0cc201()
RUBY! 00401061()
CYGWIN1! 61004402()
CYGWIN1! 61004420()
RUBY! 004011a2()
RUBY! 0040103a()
KERNEL32! 77eebd15()

make test 実行でエラーが発生した後で、プロンプトを Ctrl+C で停止
させると以下のメッセージが表示されます。

/ruby/ruby-1.4.0/sample/test.rb:764: Interrupt (RuntimeError)
        from /ruby/ruby-1.4.0/sample/test.rb:764:in `call'
        from /ruby/ruby-1.4.0/sample/test.rb:892:in ``'
        from /ruby/ruby-1.4.0/sample/test.rb:892
./rubytest.rb:26:in ``': Interrupt
        from ./rubytest.rb:26
make: *** [test] Error 1

ここまで書いて気が付きましたが、win32 版で cygwin1.dll にアクセス
しているのは変ですね。私の環境に問題があるのでしょうか。

とにかく週末に家で勉強後もう一度トライしてみます。


At 00:14 99/8/20 +0900, WATANABE Hirofumi wrote:
> わたなべです.
> 
> Hoshino Hitoshi <zin / ffm.canon.co.jp> writes:
> 
> :手順として
> :  c:/ruby/ruby-1.4.0> sh configure
> :は問題なさそうですが、
> 
> いや実は問題ありです.
> 
> この場合は拡張ライブラリは静的にしかリンクできません.
> ext/Setup を編集して静的にリンクしたいライブラリを選びます.
> 
> 拡張ライブラリを DLL にするには ruby 自体も DLL 化し ruby が
> 提供している機能を export しないと拡張ライブラリが作れません.
> つまり ./configure --enable-shared する必要があります.
> 
> すべて --enable-shared として扱ったほうがいい気もするなあ.
> 
> -- 
> わたなべひろふみ

---------
Zin