VS2013編譯GMSSL
技術標籤:庫
本文參考自https://blog.csdn.net/lt4959/article/details/85984385,下面是自己編譯的情況
官方安裝教程:http://gmssl.org/docs/install.html
1、安裝ActivePerl、Nasm
我本來安裝的是ActivePerl-5.28,但是執行perl Configure VC_WIN32
後顯示沒有安裝WIN32-Console。最後在這個網址下找到了已添加了WIN32-Console的安裝檔案,版本是5.26:https://platform.activestate.com/DonaldXY/ActivePerl-5.26/distributions
下載並安裝Nasm彙編器,並將其新增到系統環境變數Path中:https://www.nasm.us/
2、編譯第一步
以管理員身份開啟Visual Studio Tools下的Developer Command Prompt控制檯,通過cd命令進入到GmSSL-master解壓目錄後,輸入
perl Configure VC-WIN32
若要編譯64位,需開啟64位的控制檯,否者nmake
時會報錯,編譯64位使用如下命令配置:
perl Configure VC-WIN64A
會出現如下提醒:
但配置通過了,因此這一步無需考慮安裝dmake。
3、編譯第二步
在上述控制檯中輸入:
nmake
報錯如下:
libcrypto-1_1.def : error LNK2001: 無法解析的外部符號 EVP_get_ciphernames
libcrypto-1_1.def : error LNK2001: 無法解析的外部符號 EVP_get_digestnames
libcrypto.lib : fatal error LNK1120: 2 個無法解析的外部命令
NMAKE : fatal error U1077: “link”: 返回程式碼“0x1”
Stop.
顯示無法解析EVP_get_ciphernames
和EVP_get_digestnames
,查閱https://github.com/guanzhi/GmSSL/issues/1037
include\openssl\evp.h
檔案中的這兩個函式的問題:
char *EVP_get_ciphernames(int aliases);
char *EVP_get_digestnames(int aliases);
將檔案中的這兩行刪掉
同時刪除util\libcrypto.num
檔案中關於EVP_get_ciphernames
和EVP_get_digestnames
的兩行,再次執行nmake
,即可正常編譯。
4、編譯第三步
nmake install
執行正常,安裝完成後,可以在C:\Program Files (x86)\GmSSL
目錄下看到所安裝的GMSSL,若64位,則目錄為C:\Program Files\GmSSL
若使用QT呼叫gmssl庫出現問題,可參考這篇文章:https://yangleisx.github.io/2020/04/21/log-dev-qt-ssl/