LoginSignup
0
1

More than 3 years have passed since last update.

ビルドに少し苦労したのでメモしとく OpenSSL 1.1.1d for Windows

Posted at

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。

めでたしめでたし。

0
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1