Visual Studio 2019 における OpenSSL のビルド
はじめに
- Windows 環境(Visual Studio 2019)で、OpenSSL をビルドする際の手順を記載します。
- また、64bit のスタティックライブラリを例として記載します。
- ※バージョンは、2021年3月にリリースされた openssl 1.1.1k を対象としています。
ビルド手順
OpenSSLのダウンロード
- OpenSSL のダウンロードページ からソースを取得します。
- 「openssl-1.1.1k.tar.gz」をダウンロードします
- tar ファイルを解凍します。
※C:\opensslに配置した openssl-1.1.1k.tar.gz を解凍した例
cd C:\openssl
tar -xvf .\openssl-1.1.1k.tar.gz
ビルドの事前準備
- ※バージョンは、2021年3月にリリースされた openssl 1.1.1k を対象としています。
OpenSSLのダウンロード
- OpenSSL のダウンロードページ からソースを取得します。
- 「openssl-1.1.1k.tar.gz」をダウンロードします
- tar ファイルを解凍します。
※C:\opensslに配置した openssl-1.1.1k.tar.gz を解凍した例
cd C:\openssl
tar -xvf .\openssl-1.1.1k.tar.gz
ビルドの事前準備
続いて、解凍フォルダの「NOTES.WIN」に従い、ビルドに必要な各種ツールをインストールします。
- Perl
- NASM
※ NOTES.WINより引用
Visual C++ builds, aka VC-*
==============================
Requirement details
-------------------
In addition to the requirements and instructions listed in INSTALL,
these are required as well:
- Perl. We recommend ActiveState Perl, available from
https://www.activestate.com/ActivePerl. Another viable alternative
appears to be Strawberry Perl, http://strawberryperl.com.
You also need the perl module Text::Template, available on CPAN.
Please read NOTES.PERL for more information.
- Microsoft Visual C compiler. Since we can't test them all, there is
unavoidable uncertainty about which versions are supported. Latest
version along with couple of previous are certainly supported. On
the other hand oldest one is known not to work. Everything between
falls into best-effort category.
- Netwide Assembler, aka NASM, available from https://www.nasm.us,
is required. Note that NASM is the only supported assembler. Even
though Microsoft provided assembler is NOT supported, contemporary
64-bit version is exercised through continuous integration of
VC-WIN64A-masm target.
OpenSSL のビルド
Visual Studio 用開発者コマンド プロンプトの起動
Visual Studio 用開発者コマンド プロンプトを起動します。手順は、Visual Studio 用開発者コマンド プロンプトで紹介されています。
-
注意点
- x86、x64といったビルドするモジュールの種類によって、起動するコマンドプロンプトは異なります。詳細は、コマンド ラインから Microsoft C++ ツールセットを使用するを参照してください。
- 例えば、64bit ネイティブの場合は「x64 Native Tools Command Prompt for VS 2019」を起動します。
ビルドターゲットの Configure
Perl を用いてビルドターゲットを設定します。以下の例では、Windows 用 64bit スタティックライブラリをビルドするよう設定しています。
C:\openssl>cd openssl-1.1.1k
C:\openssl\openssl-1.1.1k>perl Configure VC-WIN64A no-asm no-shared
Configuring OpenSSL version 1.1.1k (0x101010bfL) for VC-WIN64A
Using os-specific seed configuration
Creating configdata.pm
Creating makefile
**********************************************************************
*** ***
*** OpenSSL has been successfully configured ***
*** ***
*** If you encounter a problem while building, please open an ***
*** issue on GitHub <https://github.com/openssl/openssl/issues> ***
*** and include the output from the following command: ***
*** ***
*** perl configdata.pm --dump ***
*** ***
*** (If you are new to OpenSSL, you might want to consult the ***
*** 'Troubleshooting' section in the INSTALL file first) ***
*** ***
**********************************************************************
- 補足
- Configure では以下のように option が幾つか用意されています。 Compilation and Installation のページにも紹介されています。
オプション | 説明 |
---|---|
no-asm | C言語 ルーティンに従う |
no-shared | スタティックライブラリのみ生成する |
--prefix=XXX | インストール先の指定(ビルド物やhファイル等) |
--openssldir=XXX | インストール先の指定 |
ビルド
Visual Studio に同梱されている「NMAKE」でビルドおよびインストールを実行します。実行後は、以下のスタティックライブラリが生成されます。
- libcrypto.lib
- libssl.lib
# ビルド
C:\openssl\openssl-1.1.1k>nmake
...
# ビルドモジュールのインストール
C:\openssl\openssl-1.1.1k>nmake install
補足: OpenSSL のスタティックリンク
OpenSSLの「NOTES.WIN」より、libcrypto.lib、libssl.libをスタティックリンクする際、以下のスタティックライブラリも必要です。
- ws2_32.lib
- gdi32.lib
- advapi32.lib
- crypt32.lib
- user32.lib
※ NOTES.WINより引用
Linking your application
========================
This section applies to all "native" builds.
If you link with static OpenSSL libraries then you're expected to
additionally link your application with WS2_32.LIB, GDI32.LIB,
ADVAPI32.LIB, CRYPT32.LIB and USER32.LIB.
...
参考資料
Author And Source
この問題について(Visual Studio 2019 における OpenSSL のビルド), 我々は、より多くの情報をここで見つけました https://qiita.com/QGv/items/dbc3e8b70d1f9f6a2f6f著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .