OpenSSL 1.0.2の手順でやってみる
欲しいものは static library
かつ マルチスレッド バージョンの静的なランタイム ライブラリ
を使うもの。
- ActivePerl、nasmをインストールする。
- nasmのPATHを環境変数に登録する。
- openssl-1.1.1dのソースをダウンロード。
- ファイルを解凍し、解答したディレクトリに移動。
perl Configure VC-WIN32 -static --prefix=e:/Projects/openssl/openssl-1.1.1d-Win32
- ms\nt.mak のCFLAGSの /MD を /MT に変更する。
nmake -f ms\nt.mak
これで終わるはずだった。
しかしperlのConfigureのところでエラー発生。
Win32::Consoleがインストールされていないよって感じのエラー。
第一関門:ActivePerlをStrawberry Perlに切り替え
ActivePerlは5.26以降、PPMが使えないらしい
Perlは全然わからないので、CPANでチャレンジ。
cpan install Win32::Console
ってやってみたけど、エラーが消えない。
既にくじけそうになるが、WindowsのPerlの選択肢は ActivePerl
だけじゃない。
Strawberry Perl for Windows
に変えることで、エラーが出なくなった。
第二関門:ダウンロードしたソースからGithubに切り替え
Perlを切り替えたことで perl Configure
は動いたので次は nmake
だ。
途中まで順調だったのに、
cl /Zi /Fdossl_static.pdb /Gs0 /GF /Gy /MT /W3 /wd4090 /nologo /O2 /WX /I "." /I "crypto\include" /I "include" -D"L_ENDIAN" -D"OPENSSL_PIC" -D"OPENSSL_CPUID_OBJ" -D"OPENSSL_BN_ASM_PART_WORDS" -D"OPENSSL_IA32_SSE2" -D"OPENSSL_BN_ASM_MONT" -D"OPENSSL_BN_ASM_GF2m" -D"SHA1_ASM" -D"SHA256_ASM" -D"SHA512_ASM" -D"RC4_ASM" -D"MD5_ASM" -D"RMD160_ASM" -D"VPAES_ASM" -D"WHIRLPOOL_ASM" -D"GHASH_ASM" -D"ECP_NISTZ256_ASM" -D"POLY1305_ASM" -D"OPENSSLDIR=\"C:\\Program Files (x86)\\Common Files\\SSL\"" -D"ENGINESDIR=\"E:\\Projects\\openssl\\openssl-1.1.1d-Win32\\lib\\engines-1_1\"" -D"OPENSSL_SYS_WIN32" -D"WIN32_LEAN_AND_MEAN" -D"UNICODE" -D"_UNICODE" -D"_CRT_SECURE_NO_DEPRECATE" -D"_WINSOCK_DEPRECATED_NO_WARNINGS" -D"OPENSSL_USE_APPLINK" -D"NDEBUG" /Zs /showIncludes "crypto\asn1\tasn_new.c" 2>&1 > crypto\asn1\tasn_new.d
NMAKE : fatal error U1073: '"crypto\asn1\tasn_prn.c"' のビルド方法が指定されていません。
Stop.
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Tools\MSVC\14.24.28314\bin\HostX86\x86\nmake.exe"' : リターン コード '0x2'
Stop.
って出てエラー。ビルド方法が指定されていません?何のこと?
あれ、crypto/asn1/tasn_prn.c
が存在していない。
なのに Makefile
にはビルド対象のファイルに入っている。
最初はPerl Configureで生成するファイルなのかと思ってスクリプトファイルを見たりしていたけれど、Perlのソースを見るのに疲れて、試しにGithubを覗く。
そしたらファイルは存在する…。
OpenSSL_1_1_1dタグに切り替えても存在している。
ということで、
git clone https://github.com/openssl/openssl.git
git checkout -b OpenSSL_1_1_1d
こいつに対し、 perl Configure
から再開。
ms\nt.makじゃなくてmakefileに変わっていたけれど、CFLAGSも問題なく変更。
nmake
も成功。
出来上がった
- libcrypto.lib
- libssl.lib
を使えばOK。
めでたしめでたし。