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/
安裝完成之後,系統環境變數應該就已經有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一樣,如下圖。