Leopard でビルドした DBD::SQLite の続き

昨日の続き。試行錯誤の結果、少し手がかりがつかめてきたように思うのでメモしておく。
Makefile をあれこれ編集してみてもまったくうまくいかず、試しに Xcode を使ってビルドしてみたが同じ結果。だめ元で Xcode 2.5 をインストールして試してみると、ファイルサイズはかなり近くなった(これを見たときには「きたか?」と思ったのだが)ものの Bus error は解消せず。
どうにもうまくいかないので Tiger で起動し直してモジュールだけビルドし、Leopard に戻ってパッケージを作成しようとしたところ

make[2]: *** No rule to make target `/System/Library/Perl/5.8.6/darwin-thread-multi-2level/Config.pm', needed by `Makefile'. Stop.

というエラーが出て止まってしまった。Perl のバージョンが違うので 5.8.6 フォルダがないんだよな……。
とりあえず一番簡単な解決方法として、Tiger から 5.8.6 フォルダをコピーして make を通す。ここでふと、今の Makefile のまま Leopard で make したらどうなるんだろうと思い、Makefile の日付だけ新しくして挑戦。エラーでまくりかと思いきや、何事もなく成功(ファイルサイズは約 1.1MB と小さい)。iBook Dual USB の Panther にコピーして動かしてみると、何の問題もなく動くではないか。
ということはバージョンの違いに起因する問題ということなのか? 今度は、Leopard 上で作った MakefilePERL_INC だけを編集して試してみる(ほかにも 5.8.8 というバージョンはあちこちに見られるが、コンパイル時に使われているのはここだけのようなので)。なんと、これもうまくいった。
ということで、それぞれの CORE フォルダにあるヘッダファイルの違いで問題が起こったり起こらなかったりするということがわかった。この違いがバージョンの違いに起因するものであれば対応は難しいかもしれないが、そうではなく何かの設定の問題であればコンパイル時のオプションで吸収できるかもしれない。見たところかなり大幅に変更されているようなので原因究明は難航しそうだが、少なくとも Leopard 上でも互換性のあるファイルを作成することができるようになったのだから一応は進展したと言えるのかな。

リモートログインとファイル転送

2 台の Mac を行き来するのが面倒になってきたので、リモートログインを有効にして ssh で接続できるようにしてみた。リモートログインを有効にするには、システム環境設定の「共有」で「リモートログイン」にチェックを入れるだけ。
あとはもう一台から ssh で接続すればホームディレクトリがカレントディレクトリになり、リモートマシン上で Terminal を起動したのとほとんど同じ状態になる(というかホスト名が異なる以外は見た目には何の違いもないような)。ファイル転送も scp でできるので、Leopard でビルドし直したファイルを転送して転送先で動作テスト、なんてこともさくっとできてしまう。これは便利だ。こんなに簡単に設定できるならもっと早く使ってみればよかった。