« 2009年 3月21日の暦 (2009/03/21)(BlogPet) | トップページ | 03月29日のココロ日記(BlogPet) »
2009.03.29
OpenSSL 0.9.8 の Win32 環境用ライブラリを自力でビルドする方法 (続)
いつの間にか(0.98b から?)、「Windows 用のバイナリパッケージ」には、デバッグビルド版のスタティックライブラリも同梱されてますね。しかも、マルチスレッドDLLデバッグ版(MDd)と、マルチスレッドデバッグ版(MTd)の両方。もはや、自分でビルドする必要がなくなりました。
[観] OpenSSL 0.9.8 の Win32 環境用ライブラリを自力でビルドする方法
ということで、ここしばらくの間、自力でビルドする必要はなくなっていたんですが、0.9.8i (か、もうちょっと前のバージョン)辺りから、同梱されているライブラリは VC8 (VC2005) 以降でないとリンクできないものになってしまいました。原因を調べてみたら、最近の OpenSSL の Windows 向けバイナリパッケージでは、VC2005 以降で登場したセキュリティ機能強化版のライブラリを使うようにしたから(当該機能の存在しないVC6ではリンクエラーになる)、ということがわかりました。さらに、0.9.8j (以降)は、VC9 (VC2008) でビルドされている関係で、VC8 で使おうとすると、OpenSSL を利用しているアプリケーションのビルド時に warning が出たり、リンク時に「ライブラリが壊れています」とか表示されたりする(crypt.obj の形式が VC8 では認識できない形式になっているらしい → 0.9.8i 特有の問題で 0.9.8j では発生しなくなっている)ようになってしまいました。
VC6 でビルドしたライブラリなら VC7、VC8、VC9 でもそのまま使えるので、いっそのこと、VC6 でビルドしたライブラリを作って、それを使うようにすることで、当座の問題を回避することにしてみました。というか、Windows 2000 以前でも動作保障できるアプリケーションをビルドしようとすると、なんのかんのいいつつ、結局 VC6 を使うことになるので、VC6 で利用可能な OpenSSL ライブラリの需要はあるんですよね。
ってなことで、VC6 で OpenSSL 0.9.8k のライブラリをビルドできるようにしてみました。0.9.8k は、まだ最近(2009年3月25日)出たばかりの最新版です。
以下、OpenSSL 0.9.8k のリリースビルド版スタティックリンクライブラリの makefile (nt.mak) と、この makefile を基に作成したデバッグビルド版スタティックリンクライブラリの makefile (nt_debug.mak) の差分(unified diff)です。同じようにリリースビルド版ダイナミックリンクライブラリの makefile を元に、デバッグビルド版ダイナミックリンクライブラリの makefile も作れます。
--- nt.mak Sat Mar 28 22:22:00 2009 +++ nt_debug.mak Sat Mar 28 22:27:08 2009 @@ -16,7 +16,7 @@ # Set your compiler options PLATFORM=VC-WIN32 CC=cl -CFLAG= /MT /Ox /O2 /Ob2 /W3 /WX /Gs0 /GF /Gy /nologo -DOPENSSL_SYSNAME_WIN32 -DWIN32_LEAN_AND_MEAN -DL_ENDIAN -DDSO_WIN32 -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE /Fdout32 -DOPENSSL_NO_CAMELLIA -DOPENSSL_NO_SEED -DOPENSSL_NO_RC5 -DOPENSSL_NO_MDC2 -DOPENSSL_NO_CMS -DOPENSSL_NO_JPAKE -DOPENSSL_NO_CAPIENG -DOPENSSL_NO_KRB5 -DOPENSSL_NO_DYNAMIC_ENGINE +CFLAG= /MTd /Ox /O2 /Ob2 /W3 /WX /Gs0 /GF /Gy /nologo -DOPENSSL_SYSNAME_WIN32 -DWIN32_LEAN_AND_MEAN -DL_ENDIAN -DDSO_WIN32 -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE /Fdout32 -DOPENSSL_NO_CAMELLIA -DOPENSSL_NO_SEED -DOPENSSL_NO_RC5 -DOPENSSL_NO_MDC2 -DOPENSSL_NO_CMS -DOPENSSL_NO_JPAKE -DOPENSSL_NO_CAPIENG -DOPENSSL_NO_KRB5 -DOPENSSL_NO_DYNAMIC_ENGINE APP_CFLAG= LIB_CFLAG=/Zl SHLIB_CFLAG= @@ -28,6 +28,7 @@ # The OpenSSL directory SRC_D=. +SRC_WIN32_D=.\ms LINK=link LFLAGS=/nologo /subsystem:console /opt:ref @@ -60,9 +61,9 @@ CPUID_ASM_SRC= # The output directory for everything intersting -OUT_D=out32 +OUT_D=out32_debug # The output directory for all the temporary muck -TMP_D=tmp32 +TMP_D=tmp32_debug # The output directory for the header files INC_D=inc32 INCO_D=inc32\openssl @@ -92,8 +93,8 @@ ###################################################### E_EXE=openssl -SSL=ssleay32 -CRYPTO=libeay32 +SSL=ssleay32d +CRYPTO=libeay32d LIBFIPS=libosslfips # BIN_D - Binary output directory
参考用として、OpenSSL の 0.9.8i、0.9.8j、0.9.8k のデバッグビルド版のスタティックリンクライブラリ、ダイナミックリンクライブラリの各 makefile の例(私が実際に使用したもの)を用意しておきます。
- 0.9.8i openssl-0.9.8i-makefile.zip
- 0.9.8j openssl-0.9.8j-makefile.zip
- 0.9.8k openssl-0.9.8k-makefile.zip
なお、この方法で作ったライブラリを使うときは、inc32 というディレクトリ以下にあるインクルードファイルをインクルードするようにしてください。「Windows 向けバイナリパッケージ」の中に入っているインクルードファイル(は VC2005 以降向けになっている)を使うと、VC6 でのビルド時にエラーが発生します。注意してください。
投稿者: tsupo 2009.03.29 午前 12:21
| 固定リンク
|
|
|
|
|
アマゾンわくわく探検隊
トラックバック
この記事のトラックバックURL:
この記事へのトラックバック一覧です: OpenSSL 0.9.8 の Win32 環境用ライブラリを自力でビルドする方法 (続):