著作一覧 |
今日はじめて気付いたが、Windows版64ビットrubyを作って32ビット版rubyと同じディレクトリへインストールしようとすると、名前が衝突する。
もちろん、普通にruby.exeとすれば名前が衝突するのは自明なので、configure --target=x64_mswin64 --program-suffix=64
として、ruby64.exeという名前でバイナリを作る。当然、32ビット版はruby.exeだし、拡張ライブラリはlib/ruby/1.9.1/i386-mswin32_100とlib/ruby/1.9.1/x64-mswin64_100で分離されるから、問題なさそうに見える。
が、残念。
rubyの本体は、どちらも、msvcr100-ruby191.dllなのですな。
だめじゃん。
ということは、プログラムsuffixをdll名にも反映させる必要がある。
自分でやるのは面倒だからRedmineかなぁ。
追記:
やってみたら、これだけだった。
--- win32/Makefile.sub~ 2011-04-12 00:47:07.000000000 +0900 +++ win32/Makefile.sub 2011-04-24 03:12:39.000000000 +0900 @@ -129,7 +129,7 @@ ruby_version = $(MAJOR).$(MINOR).$(TEENY !endif !ifndef RUBY_SO_NAME -RUBY_SO_NAME = $(RT)-$(RUBY_BASE_NAME)$(MAJOR)$(MINOR)$(TEENY) +RUBY_SO_NAME = $(RT)-$(PROGRAM_PREFIX)$(RUBY_BASE_NAME)$(PROGRAM_SUFFIX)$(MAJOR)$(MINOR)$(TEENY) !endif !ifndef RUBY_PLATFORM RUBY_PLATFORM = $(arch)
でも、名前が大きく変わると互換性の面からやばいのかも。どっかで議論してたりするかな?
ジェズイットを見習え |
autoconfを利用する環境では既に--with-so-nameがあるので、Ruby本体は問題なく動作すると思います。
うーん、勘違いしているかも知れませんが、Windows版は(bisonとか必要なくはないけど)、VC++さえあれば、win32/configure.batで相当のことができるというのが美点だと思うのですよ。だからautoconfを使うというのはMSWin版としてはあまり美しくないような。(が、上記のパッチで作ったdll名は極めて醜悪なのがなんとも)