64bit版cygwinでRuby2.0を力技でインストール

2013年8月28日水曜日

cygwin Ruby 日記

t f B! P L
多分今は64bit版cygwinで64bitなRubyを入れようと頑張らないほうがいいかもしれない。そのうち誰かが対応してくれるはず。
--prefix=$HOME/.rbenv/versions/2.0.0-p247でいつでも楽に消せる様にrbenvで管理してます。

ruby 2.0.0p247をcygwin64でmakeしたところ

compiling file.c
file.c:4184:47: エラー: ‘GetLastError’ と型が競合しています
 extern unsigned long __attribute__((stdcall)) GetLastError(void);
                                               ^
In file included from /usr/include/w32api/windows.h:70:0,
                 from file.c:18:
/usr/include/w32api/winbase.h:1363:27: 備考: 前の ‘GetLastError’ の宣言はここです
   WINBASEAPI DWORD WINAPI GetLastError(VOID);

あー。longかー。
調べてみるとcygwin64bitのgccはsizeof(long) => 8らしい。DWORDは確か4byteだったから多分このせいでエラーが出る。

最初はcygwin上のmingwでmake && make installしようとしたけどよくわからなかったので力技を使う。
file.cを開き、エラー箇所のlongのところをintに変えてmakeしてみた。

file.c:4184:46: 警告: ‘GetLastError’ は dllimport 属性無しで再宣言されました: 前の dllimport は無視されます [-Wattributes]
 extern unsigned int __attribute__((stdcall)) GetLastError(void);

こんな警告がでた。が、通った。
win32oreあたりもなんか警告がすごかった気がする。
そしてそのままmake installしてrubyを確認。

$ ruby -v
ruby 2.0.0p247 (2013-06-27) [x86_64-cygwin]


ここまでやったけどcygwinはしばらく32bitでいい気がしてきた。

QooQ