跳到主要內容

Windows 編譯 OpenSSL 1.1.0

Windows 編譯 OpenSSL 1.1.0

OpenSSL 的編譯方式在原始碼中的文件 NOTES.WIM 提到詳細的介紹在 INSTALL 文件中。

需要使用

  1. Visual Studio IDE
  2. OpenSSL 原始碼
  3. ActivePerl 或其他 Perl 執行環境

本文使用

  1. Windows 10 版本1703 組建 15063.413
  2. Visual Studio 2017 Community
  3. OpenSSL 1.1.0f
  4. ActivePerl 5.24.1.2402-MSWin32-x64-401627

32位元與64位元要分開編譯,release與debug也要分開

因為 openssl 的 Makefile 沒有自動處理四種版本,若不各自編譯會出錯,
複製四分 openssl 原始碼,分為 32 位元與 64 位元及 release 與 debug,例: c:\openssl-x86c:\openssl-x86-dbgc:\openssl-x64c:\openssl-x64-dbg

x86

  1. 以系統管理員權限執行 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)執行
  2. cd 到解壓縮的openssl資料夾內,例: cd c:\openssl-x86
  3. 執行以下
    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

  1. 以系統管理員權限執行 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)執行
  2. cd 到解壓縮的openssl-debug資料夾內,例: cd c:\openssl-x86-dbg
  3. 執行以下
    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

  1. 以系統管理員權限執行 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)執行
  2. cd 到為64位元準備的的openssl-x64資料夾內,例: cd c:\openssl-x64
  3. 執行以下
    perl Configure VC-WIN64A no-asm --prefix=C:\openssl-msvc2017-x64
    mkdir C:\openssl-msvc2017-x64
    nmake
    nmake test
    nmake install
    

x64-debug

  1. 以系統管理員權限執行 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)執行
  2. cd 到為64位元準備的的openssl-x64-debug資料夾內,例: cd c:\openssl-x64-dbg
  3. 執行以下
    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 為例
  1. 專案 > 屬性 >> 組態屬性 > C/C++ > 一般 >> 其他 Include 目錄 新增目錄
    C:\openssl-msvc2017-x64\include
  2. 專案 > 屬性 >> 組態屬性 > 連結器 > 一般 >> 其他程式庫目錄 新增目錄
    C:\openssl-msvc2017-x64\lib
  3. 專案 > 屬性 >> 組態屬性 > 連結器 > 輸入 >> 其他相依性 新增兩個靜態庫
    libssl.lib
    libcrypto.lib
  4. 將對應組態的 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 檔。

留言