Ruby mswin32拡張ライブラリィMSVCR80版ビルド覚書き No.4

いわゆる"Fast-Debugger"であり、拡張ライブラリィ経由でrubyデバッグを行うためのものだ。
rubyForgeにアップされているruby-debug-base-0.10.3-mswin32.gemに同梱されているruby_debug.soはMSVCRTに依存しているので、以下のソースコードからビルドして、gemを作り直す必要がある。

ruby-debug-base-0.10.3.tgz

MakeFileは添付されているがどうやらmingw用なので、extconf.rbを起動して作り直してnmakeする。
ビルドに成功すると新しくMSVCR80に依存したruby_debug.soが出来るので、win32ディレクトリにコピーした後、ルートにあるrakefileでgemを生成するrakeタスクを実行する

rake win32_gem 

成功すると今回の場合ruby-debug-base-0.10.3-x86-mswin32.gemが出来るので、これをrubgemsでインストールすればOK

  • linecache (trace_num )

ruby-debug-baseはlinecacheにも依存しているので、同様にrubyForgeからソースコードを取得してビルドする必要がある

linecache-0.43.tgz

手順と方法はruby-debug-baseと同じだ。楽勝、と思ったのだが、nmakeが通らない。

trace_nums.c
        cl -nologo -LD -Fetrace_nums.so trace_nums.obj msvcr80-ruby18.lib  oldnames.lib user32.lib advapi32.lib shell32.lib ws2_32.lib   -link -incremental:no -debug -opt:ref -opt:icf -dll -libpath:"." -libpath:"e:/ruby/lib"  -implib:trace_nums-i386-mswin32_80.lib -pdb:trace_nums-i386-mswin32_80.pdb -def:trace_nums-i386-mswin32_80.def
   ライブラリ trace_nums-i386-mswin32_80.lib とオブジェクト trace_nums-i386-mswin32_80.exp を作成中
trace_nums.obj : error LNK2019: 未解決の外部シンボル _ruby_eval_tree_begin が関数 _lnums_for_str で参照されました。
trace_nums.obj : error LNK2019: 未解決の外部シンボル _ruby_in_eval が関数 _lnums_for_str で参照されました。
trace_nums.so : fatal error LNK1120: 外部参照 2 が未解決です。
NMAKE : fatal error U1077: '"D:\Program Files\Microsoft Visual Studio 8\VC\BIN\cl.EXE"' : リターン コード '0x2'
Stop.

_ruby_eval_tree_beginと_ruby_in_evalへの参照が解決できないらしい。これらはruby内部からエクスポートされているはずなんだけどな。ただし、先頭のアンダースコアは付いていない。その辺が原因か?

取りあえずここでギブアップ。どこに原因があるかが私には全くわからん。