Windows 編譯 OpenSSL 1.1.0
OpenSSL 的編譯方式在原始碼中的文件 NOTES.WIM 提到詳細的介紹在 INSTALL 文件中。
需要使用
- Visual Studio IDE
- OpenSSL 原始碼
- ActivePerl 或其他 Perl 執行環境
本文使用
- Windows 10 版本1703 組建 15063.413
- Visual Studio 2017 Community
- OpenSSL 1.1.0f
- ActivePerl 5.24.1.2402-MSWin32-x64-401627
32位元與64位元要分開編譯,release與debug也要分開
因為 openssl 的 Makefile 沒有自動處理四種版本,若不各自編譯會出錯,
複製四分 openssl 原始碼,分為 32 位元與 64 位元及 release 與 debug,例:
複製四分 openssl 原始碼,分為 32 位元與 64 位元及 release 與 debug,例:
c:\openssl-x86
、 c:\openssl-x86-dbg
、 c:\openssl-x64
、 c:\openssl-x64-dbg
x86
- 以系統管理員權限執行 x86 Native Tools Command Prompt for VS 2017
,通常安裝 Visual Studio IDE 時會新增捷徑到開始列表
,而 2017 Community 版本的檔案位置為C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars32.bat
,不能直接執行vcvars32.bat
, 應該以命令提示字元(cmd.exe)執行 - cd 到解壓縮的openssl資料夾內,例:
cd c:\openssl-x86
- 執行以下
perl Configure VC-WIN32 no-asm --prefix=C:\openssl-msvc2017-x86 mkdir C:\openssl-msvc2017-x86 nmake nmake test nmake install
這樣會輸出在
C:\openssl-msvc2017-x86
x86-debug
- 以系統管理員權限執行 x86 Native Tools Command Prompt for VS 2017
,通常安裝 Visual Studio IDE 時會新增捷徑到開始列表
,而 2017 Community 版本的檔案位置為C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars32.bat
,不能直接執行vcvars32.bat
, 應該以命令提示字元(cmd.exe)執行 - cd 到解壓縮的openssl-debug資料夾內,例:
cd c:\openssl-x86-dbg
- 執行以下
perl Configure VC-WIN32 no-asm --prefix=C:\openssl-msvc2017-x86-dbg --debug mkdir C:\openssl-msvc2017-x86-dbg nmake nmake test nmake install
x64
- 以系統管理員權限執行 x64 Native Tools Command Prompt for VS 2017
,通常安裝 Visual Studio IDE 時會新增捷徑到開始列表
,而 2017 Community 版本的檔案位置為C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars64.bat
,不能直接執行vcvars64.bat
, 應該以命令提示字元(cmd.exe)執行 - cd 到為64位元準備的的openssl-x64資料夾內,例:
cd c:\openssl-x64
- 執行以下
perl Configure VC-WIN64A no-asm --prefix=C:\openssl-msvc2017-x64 mkdir C:\openssl-msvc2017-x64 nmake nmake test nmake install
x64-debug
- 以系統管理員權限執行 x64 Native Tools Command Prompt for VS 2017
,通常安裝 Visual Studio IDE 時會新增捷徑到開始列表
,而 2017 Community 版本的檔案位置為C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars64.bat
,不能直接執行vcvars64.bat
, 應該以命令提示字元(cmd.exe)執行 - cd 到為64位元準備的的openssl-x64-debug資料夾內,例:
cd c:\openssl-x64-dbg
- 執行以下
perl Configure VC-WIN64A no-asm --prefix=C:\openssl-msvc2017-x64-dbg --debug mkdir C:\openssl-msvc2017-x64-dbg nmake nmake test nmake install
環境設定
編譯輸出內有四個資料夾,分別是
- bin - 動態庫
- html - 文件
- include - 標頭檔
- lib - 靜態庫
以 Visual Studio IDE 組態 Release 平台 x64 為例
- 專案 > 屬性 >> 組態屬性 > C/C++ > 一般 >> 其他 Include 目錄 新增目錄
C:\openssl-msvc2017-x64\include
- 專案 > 屬性 >> 組態屬性 > 連結器 > 一般 >> 其他程式庫目錄 新增目錄
C:\openssl-msvc2017-x64\lib
- 專案 > 屬性 >> 組態屬性 > 連結器 > 輸入 >> 其他相依性 新增兩個靜態庫
libssl.lib
libcrypto.lib
- 將對應組態的 dll 動態庫放到專案資料夾中
libssl-1_1-x64.dll
libcrypto-1_1-x64.dll
關於 dll 檔的位置,放在專案資料夾或是執行檔輸出目錄都可以,以方案
my-sln
專案 my-project
組態 Release 平台 x64 為例,專案路徑 C:\my-sln\my-project
,那 dll 檔放在執行檔目錄 C:\my-sln\x64\Release
或是專案目錄 C:\my-sln\my-project
裡都可以,放在執行檔目錄是比較好的選擇,可以根據組態與平台取得正確的 dll 檔。
留言
張貼留言