Win32でCrypt::SSLeayをコンパイルする

こういうのは自前でコンパイルするよりppmでインストールした方が気楽だと思いますが、とりあえず自分用のメモとして。

1) OpenSSLのソースを取ってくる

今回は0.9.7jを使ってみましたが、もちろん0.9.8系でも大丈夫なはず。

2) 適当にコンパイル

速さを求めるならmasmなりnasmなり入れておくこと。面倒ならアセンブラなしで。マニュアル通りにすればWin32でも何の問題もなくコンパイルできるはず。C:\OpenSSLで作業しておくと後が楽ですが、スペースとか日本語とか入っていないパスなら特に気にする必要なし。

3) Crypt::SSLeayを落としてくる

面倒ならcpan -m Crypt::SSLeayでも。

4) 解凍してできたCrypt::SSLeayのディレクトリにOpenSSLのヘッダファイルをコピー

(C:\)OpenSSL/inc32/ の下にある openssl/*.h をそのまま(openssl/ディレクトリ込みで)...\Crypt-SSLeay-0.51\ の下にコピー。

5) Makefile.PLに-I.(カレントディレクトリ)を追加

Makefile.PLのWriteMakefileを探して、INC => "-I".$SSL_INC の行を、INC => "-I. -I".$SSL_INC のように修正。

#正直なところコンパイラの設定さえ正しくしておけば4と5はいらないような気もするんですが、うちのMSVC6ではここでしばらくハマっていたので念のため。

6) perl Makefile.PL -> nmake -> nmake test -> nmake install

ちなみにREADMEにはWin32ユーザ向けに

!!! NOTE for Win32 users, few people seem to be able to build
W Crypt::SSLeay successfully on that platform. You don't need
I to because ActiveState has already compiled it for you,
N and is available for their perl builds 618 & 522 as a ppm
3 install. It may also be available for their latest build.
2 For problems with this, please contact ActiveState.
!!! Please see http://www.activestate.com/

なんてことも書いてあります。

Net::SSLeayもだいたい同じ作り方でOKですが、こちらはテストを繰り返すとしける部分があるので、test.plから # Not Windows where fork does not work というコメントを探し出して、そこの条件文を if (0) { にしてしまうのが吉。