1. 程式人生 > >OpenSSL 靜態、共享編譯,解決ms\do_ms報錯

OpenSSL 靜態、共享編譯,解決ms\do_ms報錯

本文件中包含,VS2010 、VS2015下編譯OpenSSL,以及交叉使用下的問題。

安裝環境:

作業系統:window10(64位)

C++編譯器:VS2010   除了VS2010 我電腦上還有VS2015 ,這個不影響後面的編譯。

工具下載: (下載正確的包才是後面順利進行的前提)

1)下載ActivePerl:最新版即可。如果要編譯32位的OpenSSL一定要選擇下載Win32的ActivePerl。

下載地址http://www.activestate.com/activeperl/downloads/      

(安裝過程只要按照Windows下一般程式的安裝步驟進行即可)

安裝完成之後,系統環境變數應該就已經有Perl了,如果沒有自行新增,如下圖。


2)下載openssl-1.0.2l 並解壓(注意其他版本,有些版本並不適合各個教程,下方有說明)

下載地址:http://www.openssl.org/source/(建議解壓後的檔案路徑為C:\openssl,PS:只是為了下文的內容匹配,並且方便尋找,其他路徑也無不影響)。

3)下載NASM

下載地址:http://nasm.sourceforge.net/

安裝,配置環境變數

1)首先設定好環境變數


2)使用Visual Studio命令提示(2010)進入控制檯模式

 使用cd命令將目錄指向C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin(PS:自己的VC安裝路徑), 命令列鍵入vcvars32,執行vcvars32.bat..完成後進入OpenSSL原始碼的目錄(C:\openssl)

3)執行Configure命令(配置編譯引數)(需將目錄跳到OpenSSL原始碼目錄下)

在命令列中鍵入"perl Configure VC-WIN32 --prefix=c:\openssl"(PS:--prefix=c:\openssl命令為指定安裝位置)

4)執行ms\do_nasm命令(需將目錄跳到OpenSSL原始碼目錄下)

5.1)要生成共享DLL,執行“nmake -f ms\ntdll.mak”命令進行程式碼編譯(需將目錄跳到OpenSSL原始碼目錄下)

5.2)要生成靜態LIB,執行“nmake -f  ms\nt.mak”命令進行程式碼編譯(需將目錄跳到OpenSSL原始碼目錄下)

6)測試使用命令“nmake -f ms\ntdll.mak test”(若安裝成功則可以使用此命令來驗證)


在專案中用的時候,標頭檔案在 .\inc32\openssl 資料夾下,共享Dll檔案在 .\out32dll 資料夾中,靜態LIB在 .\out32資料夾中。

用VS2010 靜態編譯生成的庫,在VS2015 下連結會出現下面的錯誤。


有兩種解決辦法:
1.在專案的平臺工具集中選擇VS2010,重新生成專案,這中方法需要電腦中有安裝VS2010。

2.用VS2015的開發環境,對OpenSSL重新編譯。

系統環境變數設定:


選擇VS2015 x86 本機工具命令提示符

命令輸入和VS2010一樣,如下圖。