トップ «前の日記(2011-04-22) 最新 次の日記(2011-04-25)» 編集

日々の破片

Subscribe with livedoor Reader
著作一覧

2011-04-24

_ windows版rubyの困った点

今日はじめて気付いたが、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)

でも、名前が大きく変わると互換性の面からやばいのかも。どっかで議論してたりするかな?

本日のツッコミ(全2件) [ツッコミを入れる]
_ yugui (2011-04-24 12:12)

autoconfを利用する環境では既に--with-so-nameがあるので、Ruby本体は問題なく動作すると思います。

_ arton (2011-04-24 20:37)

うーん、勘違いしているかも知れませんが、Windows版は(bisonとか必要なくはないけど)、VC++さえあれば、win32/configure.batで相当のことができるというのが美点だと思うのですよ。だからautoconfを使うというのはMSWin版としてはあまり美しくないような。(が、上記のパッチで作ったdll名は極めて醜悪なのがなんとも)


2003|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|

ジェズイットを見習え