visual studio 2022で OPENSSL を static build する

ビルドに必要なもの

  • Visual Studio 2022(正確にはVS2022本体は使いませんbuild toolsのnmakeを使うだけです)
  • Strawberry Perl
  • OpenSSL

Strawberry Perl install

https://strawberryperl.com/releases.html

download https://strawberryperl.com/download/5.32.1.1/strawberry-perl-5.32.1.1-64bit.zip

  • ポータブル版をdownloadしてc:\などに配置
  • システムの詳細設定>環境変数>Path
  • 配置したperl.exeまでのPathを追加する
  • 以下のPathを追加する -- C:\strawberry-perl-5.32.1.1-64bit-portable\perl\bin

環境変数の設定 perlまでのpathを通す

Native Tools Command Prompt を起動し直してperlの確認

perl -v
This is perl 5, version 32, subversion 1 (v5.32.1) built 
for MSWin32-x64-multi-thread

openssl install

openssl download

  • https://www.openssl.org/source/
  • https://www.openssl.org/source/old/1.1.1/openssl-1.1.1l.tar.gz
mkdir C:\Build-OpenSSL-VC32
cd C:\Build-OpenSSL-VC32
wget https://www.openssl.org/source/old/1.1.1/openssl-1.1.1l.tar.gz
tar zxvf openssl-1.1.1l.tar.gz
cd openssl-1.1.1l

x86版OPENSSL STATIC BUILD

Native Tools Command Prompt は2種類あるので間違わないように

(x86) Native Tools Command Prompt for VS2022

perl Configure VC-WIN32 --prefix=C:\Build-OpenSSL-VC32\x86 --openssldir=C:\Build-OpenSSL-VC32\x86\ssl no-asm no-shared
nmake
nmake install
nmake clean

x86 directoryにinstallされる

x64版OPENSSL STATIC BUILD

(x64) Native Tools Command Prompt for VS2022

perl Configure VC-WIN64A --prefix=C:\Build-OpenSSL-VC32\x64 --openssldir=C:\Build-OpenSSL-VC32\x64\ssl no-asm no-shared

nmake
nmake install
nmake clean

x64 directoryにinstallされる

ここまででOPENSSLライブラリのビルドとインストールは終わり

openssl build optionについて

  • VC-WIN32 ... x86 用オプション
  • VC-WIN64A ... x64 用オプション
オプション   説明
no-asm  C言語 ルーティンに従う
no-shared   スタティックライブラリのみ生成する
--prefix=XXX    インストール先の指定(ビルド物やhファイル等)
--openssldir=XXX    インストール先の指定

ここから先は今回ビルドしたOpenSSLスタティックリンクライブラリを利用するプロジェクトで必要な設定

OpenSSLの「NOTES.WIN」より、libcrypto.lib、libssl.libをスタティックリンクする際、 以下のスタティックライブラリも必要です。(x86プラットフォーム向けのプロジェクトの場合)

ws2_32.lib
gdi32.lib
advapi32.lib
crypt32.lib
user32.lib
C:\Build-OpenSSL-VC32\x86\lib\libcrypto.lib
C:\Build-OpenSSL-VC32\x86\lib\libssl.lib

VS2022ではプロジェクトのプロパティ>リンカー>入力>追加の依存ファイルに上記lib群を追加する

※プラットフォームによりincludeファイルやlibファイルが分かれている場合、それぞれx86やx64に合わせて指定する必要がある。

追加の依存ファイルに必要なライブラリを追加する

ライブラリディレクトリの追加

プロジェクトのプロパティ>リンカー>全般>追加のライブラリディレクトリに - OPENSSLのlibディレクトリPATHを追加する - C:\Build-OpenSSL-VC32\x86\lib

ライブラリディレクトリの追加

インクルードディレクトリの追加

プロジェクトのプロパティ>C/C++>全般>追加のインクルードディレクトリに - OPENSSLのincludeディレクトリPATHを追加する - C:\Build-OpenSSL-VC32\x86\include

インクルードディレクトリの追加

参考

created:

Back to top