Ruby mswin32拡張ライブラリィMSVCR80版ビルド覚書き No.4
- ruby-debug-base
いわゆる"Fast-Debugger"であり、拡張ライブラリィ経由でrubyのデバッグを行うためのものだ。
rubyForgeにアップされているruby-debug-base-0.10.3-mswin32.gemに同梱されているruby_debug.soはMSVCRTに依存しているので、以下のソースコードからビルドして、gemを作り直す必要がある。
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からソースコードを取得してビルドする必要がある
手順と方法は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内部からエクスポートされているはずなんだけどな。ただし、先頭のアンダースコアは付いていない。その辺が原因か?
取りあえずここでギブアップ。どこに原因があるかが私には全くわからん。