慣れない作業で苦労しました
♪ 1. SQLite のインストール
SQLite は Windows ユーザー向けには、exe (コマンドラインツール) と dll 形式でバイナリが配布されている。必要なのは lib (ライブラリ)だから dll からインポートライブラリを作る。ところがハマった。
× implib sqlite.lib sqlite.dll
○ implib -a sqlite.lib sqlite.dll
Borland の implib.exe についてのヘルプを見ると
-a : Add '_' alias for cdecl functions for compatibility with Microsoft libraries
*.c では Init_*() な関数が *.so では _Init_*() になってる理由はコレでしたか。余計なことはしてくれるな > MS
♪ 2. Ruby/DBI のインストール
SQLite 用の DBD はソースファイル(sqlite.c)のままだからコンパイルが必要。でも、コンパイルを行う
ruby setup.rb setup
が失敗する。中で呼ばれる ruby-dbi-all/ext/dbd_sqlite/extconf.rb が失敗してるのが原因らしい。
extconf.rb 失敗の原因のひとつは 1. で作ったインポートライブラリ。もうひとつは rbconfig.rb やった。
最初に、原因を突き止めようと mkmf.log を見てみたら
cl -nologo 〜略〜
なんて行がある。cl なんてコマンド、このコンピューターには存在しない。検索したら VC++ のコンパイラだって。また MS ですよ。
ruby1.6.8 の時は bcc でコンパイルされたバイナリを拾って来てたんやけど、1.8.1 は bcc 版のバイナリがみつからなくって msvc 版を拾って来てた。動かす分にはどちらでも問題は無いんやけど。
♪ 3. ruby-1.8.1 のコンパイル
rbconfig.rb 内の "cl" を "bcc32" に置換するだけで解決する問題ではなく、ruby のコンパイルから行う。
・ ・ ・ ・ ・
何か DOS プロンプトがおかしいみたい。configure.bat を実行して、そこから make が呼ばれた瞬間、フリーズする。@echo とか @type とか しょうもない行で。
再起動しまくり。あきらめた。
・ ・ ・ ・ ・
cygwin を入れて bash から configure を呼んでみる。1391行目でハネられる。何やってんのか解らへんから解決不可能。この行を飛ばしてみても 1500行目くらいでまたハネられる。あきらめた。
・ ・ ・ ・ ・
もう 1 つの PC (WinXP) に BCC55 を入れて configure.bat に再挑戦。途中、ちょこちょこ止まるものの すぐ解決して ruby.exe が完成。
♪ 4. Ruby/DBI のインストール
3. で rbconfig.rb の問題はなくなり、implib の問題に気づいた後は Ruby/DBI のコンパイル & インストールも問題なく完了。
♪ 5. 元の PC (Win98) に完成品をコピー
C:\ruby 以下を丸々コピー。