Help us understand the problem. What is going on with this article?

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

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。

めでたしめでたし。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした