VC++12 (VS2013) で OpenSSL 1.0.2 x64 をビルドしたメモ(のつもり)


(x86 ビルドについてはこちらを参照

準備

  • OpenSSL 1.0.2 のソースをダウンロードして展開
  • Perl は以前からインストールされていた ActivePerl 5.16.2 を使用
  • Perl, VC++ の x64 コンパイラ等にパスを通す

ここでは VS 2013 に含まれる VC++ 12 を使用した。

ビルド

OpenSSL のソースは D:\Temp\openssl-1.0.2 に展開されており、ビルド後に D:\Libraries\openssl64 にインストールすると仮定する。

  • D:\Temp\openssl-1.0.2 に移動
  • > perl Configure VC-WIN64A --prefix=D:/Libraries/openssl64 で Makefile を生成
  • > ms\do_win64a でアセンブリソースと Makefile を生成
  • > nmake -f ms\ntdll.mak install で DLL をビルド&インストール
  • もしくは > nmake -f ms\nt.mak install でスタティックライブラリをビルド&インストール

テストを実行するなら DLL ビルド後に

> cd out32dll
> ..\ms\test

もしくは、スタティックライブラリビルド後に

> cd out32
> ..\ms\test

として、最後に passed all tests と表示されれば正常(だと思う)。

ちなみに、上の例だと、インストール時に D:/Libraries/openssl64/lib へ libeay32.lib と ssleay32.lib がコピーされる。

これらのファイルは DLL ビルドの時はインポートライブラリ、スタティックライブラリの時はスタティックライブラリ自身を意味しており、DLL とスタティックライブラリを両方インストールすると後でインストールしたものによって以前のファイルが上書きされることに注意。

なお、デバッグ版をビルドする場合は

> perl Configure debug-VC-WIN64A --prefix=D:/Libraries/openssl64

のようにして Configure スクリプトを実行すれば良い。