Windows下編譯OpenSSL


簡述

OpenSSL是一個開源的第三方庫,它實現了SSL(Secure SocketLayer)和TLS(Transport Layer Security)協議,被廣泛企業應用所采用。對於一般的開發人員而言,在Win32 OpenSSL上下載已經編譯好的OpenSSL庫是省力省事的好辦法。對於高級的開發用戶,可能需要適當的修改或者裁剪OpenSSL,那么編譯它就成為了一個關鍵問題。下面主要講述如何在Windows上編譯OpenSSL庫。

步驟

  1. 在微軟網站下載並安裝Visual Studio(編譯需要VC庫支持),我用的是2017版。

  2. 下載並安裝ActivePerl。 
    下載地址:http://www.activestate.com/activeperl/downloads 
    我下載的是:5.24.1.2402 Windows Installer(EXE)                                   

    打開命令提示符,將其定位到C:\Perl64\eg目錄下,執行perl example.pl,若提示:Hello from ActivePerl! 則說明Perl安裝成功,可以開始使用Perl的相關命令來進行OpenSSL的安裝了。

  3. 下載並安裝Nasm匯編器,並將D:\Program Files\NASM添加到系統環境變量Path中。(注:這一步是因為對於下面要安裝的openssl-1.0.2版本,用masm匯編器匯編會出錯,因此使用nasm)                                                 下載地址:http://www.nasm.us/pub/nasm/releasebuilds/。我下載的是:nasm-2.14rc0-installer-x64.exe。

  4. 下載並安裝OpenSSL。 下載地址:https://www.openssl.org/source/。 我下載的是:openssl-1.0.2l.tar.gz (SHA256) (PGP sign) (SHA1)

在完成所有上述步驟,我們就可以解壓縮OpenSSL包(解壓至:D:\openssl-1.0.2l),在對它進行修改便可以編譯了。解壓后的目錄中有兩個文件INSTALL.W32、INSTALL.W64需要被關注。打開其中任何一個文件,你會看到如何編譯OpenSSL的各個步驟。

  1. 將命令提示符定位到D:\openssl-1.0.2l

  2. 輸入perl Configure VC-WIN32 --prefix=D:\OpenSSL (將其安裝到D:\OpenSSL)。

  3. 輸入ms\do_nasm

  4. 輸入nmake -f ms\ntdll.mak,執行完后會在openssl-1.0.2l目錄下生成一個out32dll的文件夾,里面包含了一些靜態庫、動態庫和.exe文件。

  5. 輸入nmake -f ms\ntdll.mak test,若最終顯示passed all tests說明生成的庫正確。

  6. 輸入nmake -f ms\ntdll.mak install,則會在D:\OpenSSL目錄下生成bin、include、lib、ssl四個文件夾。

 

注意:

  • 以上編譯的是release庫,若編譯debug庫,則將以上第2步中的VC-WIN32改成debug-VC-WIN32即可。另外一定要注意VC-WIN32大小寫不能錯。

  • 若編譯靜態庫,則用ms\nt.mak替換掉上面用到的ms\ntdll.mak即可。

  • 若生成不帶匯編支持的庫,則需將以上第2、3步用perl Configure VC-WIN32 no-asm --prefix=D:\OpenSSLms\do_ms替換即可。

  • 在D:\openssl-1.0.2l\tmp32dll文件夾下包含相應的匯編文件。

  • 第4步編譯過程中很可能出現各種未定義或鏈接失敗錯誤,為了找到需要的文件,需要修改path環境變量,新增lib和include環境變量。           我的改動如下,各位可以根據自己機器環境參照着更改:                                                                                                                                                                                                                                                path新增   D:\visualstudio2017\Common7\IDE;
    D:\visualstudio2017\VC\Tools\MSVC\14.10.25017\bin\HostX86\x86;
    D:\visualstudio2017\VC\Tools\MSVC\14.10.25017\bin\HostX86\x64;
    C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Bin;
    C:\Program Files\NASM;                                                                                                                                                                                                           include內容為  C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\ucrt;
    C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um;
    C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\shared;
    D:\visualstudio2017\VC\Tools\MSVC\14.10.25017\include

    lib內容為  D:\visualstudio2017\VC\Tools\MSVC\14.10.25017\lib\x86;
    C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Lib;
    C:\Program Files (x86)\Windows Kits\10\Lib\10.0.14393.0\ucrt\x86

     

  • 出現其它奇怪的問題時,建議多搜索。由於這個庫十分常用,網上有不少類似問題,我安裝時遇到了很多坑,上文中沒有一一列出,借助了很多網絡上的力量。

 
參考鏈接:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM