Ruby言語やLinuxのネタが多いです。
November 17, 2004 [おもひで]
> cd ruby-1.8.2
> set RUBYOPT=
> "C:\Program Files\Microsoft.NET\SDK\v1.1\Bin\sdkvars.bat"
> "C:\Program Files\Microsoft SDK\SetEnv.Bat"
> win32\configure.bat
> nmake
(コンパイルはうまくいく)
lib -nologo -machine:x86 -out:msvcrt-ruby18-static.lib array.obj bignum
.obj class.obj compar.obj dir.obj dln.obj enum.obj error.obj eval.obj fi
le.obj gc.obj hash.obj inits.obj io.obj marshal.obj math.obj numeric.obj
object.obj pack.obj parse.obj prec.obj process.obj random.obj range.obj
re.obj regex.obj ruby.obj signal.obj sprintf.obj st.obj string.obj struct
.obj time.obj util.obj variable.obj version.obj acosh.obj crypt.obj erf.obj
win32.obj dmyext.obj
'lib' is not recognized as an internal or external command,
operable program or batch file.
NMAKE : fatal error U1077: 'lib' : リターン コード '0x1'
Stop.
ここでlibが無いと言われてしまうのだけど、オレの環境ではlib.exeがC:\Program Files\Microsoft SDK\Bin\Win64\lib.exeしかみつからない。Win64というのが怪しい(オレのマシンはPentium IIIのWindows2000)けど、とりあえず、PATHにこのフォルダを追加して続けてみる。
> set PATH=%PATH%;"C:\Program Files\Microsoft SDK\Bin\Win64"
> nmake
.\miniruby.exe ./win32/mkexports.rb -output=msvcrt-ruby18.def msvcrt-rub
y18-static.lib
./win32/mkexports.rb:6:in `foreach': No such file or directory - dumpbin -symbol
s msvcrt-ruby18-static.lib (Errno::ENOENT)
from ./win32/mkexports.rb:6
NMAKE : fatal error U1077: '.\miniruby.exe' : リターン コード '0x1'
Stop.
で、昨日の事象が再現。
■ ってことはやっぱりlib.exeのところが変なのかなー。それともオレの環境がダメダメ?...その可能性はかなり高いな(^^;)。
■ [Ruby-GNOME2] ruby-gtk2-0.11.0 for One Click Ruby Installer
One Click Installer上で動作するruby-gtk2のバイナリを用意しました。
Ruby/GLib, Ruby/ATK, Ruby/Pango, Ruby/GdkPixbuf, Ruby/GTK, Ruby/GtkGLExt, Ruby/Libglade, Ruby-GetText-Package, Raccが入っています。ぜひお試しください。
■ 最近、One Click InstallerでインストールしたRuby上でMinGWでコンパイルしたruby-gtk2が動作しないと言う現象が起きていました。
で、今回、VCでコンパイルをし直したところ動作するようになった、というものです。
#いいのかな、こんなんで(^^;)。
■ それにしてもVCでコンパイルできるようにするまでかなり大変でした。
結局、Ruby自体のコンパイルはあきらめたのですが(^^;)、ソースに手を入れたりMakefileに手を入れたり環境変数設定したり... 逆に、その辺をしっかりしておけばMinGWでコンパイルしても大丈夫なのかもしれません。型のチェックなんかはVCの方が厳しいみたいですし。
#もちろん、もっと簡単な方法があるのかもしれませんがなにぶんWindowsの開発環境には疎いもので(^^;)。
もう少し簡単にできるようにしないと次が大変だ。うーん。

One Click Installerのはmsvcrt7.dllにリンクされているらしいですが、
mingwでコンパイルしたものは何にリンクされているでしょうか。
聞いたところでは、最近のmingwもlibmsvcrt7.dll.aはあるらしいということですが。
Win64フォルダの中身は、Win64用なので...
link.exeなども怪しかったりしますかひょっとして?
なかださんのツッコミ内容についての詳細はebanさんの日記参照。
(う)さん>
やっぱりWin64用ですよね...。
普通lib.exeってどこにあるんでしょうか?
link.exeはcl.exeと同じフォルダにあるので大丈夫じゃないかなぁと思ってはいるのですが...。
ebanさんの記事って以下のURLですね。勉強になります。
http://jarp.jin.gr.jp/diary/200411b.html#200411171
なかださん>
ebanさんのところと同じようにgtk2.soをobjdumpしてみますとやはりmsvcrt.dllにリンクしているようです。
一方、VCでコンパイルしたgtk2.soを見るとMSVCR71.dllにリンクされています。
lib.exeはcl.exeやlink.exeと同じところに...
Platform SDKのおまけでついてくるのは、非Platform SDK環境(つまり正規のVisual Studio)に含まれてない分を補完するために入ってるはずです。
ということは、やっぱり正規版じゃないとダメってことですかねえ。うーん。
あぁ、そういうことなのかもしれませんねぇ。
それだとあまりうれしくないなぁ、がっくし。