1、虛擬機win10 x64,離線安裝vs2010和2010sp1補丁;
2、安裝ActivePerl_v5.28.1.0000和nasm-2.16.03-installer-x64均是默認完整安裝;
?nasm官網下載:
Index of /pub/nasm/releasebuilds/2.16.03/win64https://www.nasm.us/pub/nasm/releasebuilds/2.16.03/win64/?ActivePerl官網要注冊,華軍下載:ActivePerl下載_ActivePerl(Perl執行工具)官方中文版下載-華軍軟件園
https://www.onlinedown.net/soft/8364.htm
?3、github下載gmssl-v2官方庫;
https://github.com/guanzhi/GmSSL/tree/GmSSL-v2https://github.com/guanzhi/GmSSL/tree/GmSSL-v2
4、打開vs2010命令行,并且進入解壓的代碼目錄;
5、執行命令perl ?Configure ?VC-WIN32,報錯NASM not found
?
5、nasm配置環境變量,記得重啟電腦;
?nasm -h有返回值即代表正常
6、執行perl ?Configure ?VC-WIN32,繼續報錯Can't locate Win32/Console.pm in
?這是perl配置問題了,打開路徑,C:\Perl64\site\lib\ActivePerl,將Configure.pm右鍵屬性,只讀取消勾選,然后395行到413行下圖用#號注釋,保存,右鍵屬性,恢復只讀。
7、再執行perl ?Configure ?VC-WIN32,成功生成makefile
?
8、nmake開始編譯
?9、改報錯,未聲明的標識符
一共有2個.c需要處理如下:
crypto/sm9/sm9_asn1.c
//300行挪到296行
crypto/sm9/sm9_rate.c
//2287行挪到2204行?
10、nmake繼續報錯EVP_get_digestnames??EVP_get_ciphernames
GmSSL-GmSSL-v2_2\GmSSL-GmSSL-v2\crypto\evp\names2.c 末尾添加
static void cipher_name_len(const EVP_CIPHER *cipher, const char *from,const char *to, void *x)
{*((int *)x) += strlen(EVP_CIPHER_name(cipher));
}static void cipher_name(const EVP_CIPHER *cipher, const char *from,const char *to, void *x)
{strcat((char *)x, EVP_CIPHER_name(cipher));
}char *EVP_get_ciphernames(int aliases)
{char *ret = NULL;int len = 0;EVP_CIPHER_do_all_sorted(cipher_name_len, &len);ret = OPENSSL_zalloc(len);if (!ret) {return NULL;}EVP_CIPHER_do_all_sorted(cipher_name, ret);return ret;
}char *EVP_get_digestnames(int aliases)
{return "sm3:sha1:sha256";
}
11、繼續報錯ssl/statem/statem_gmtls.c?未聲明的標識符
備注:跟第9步類似
?//原本三行注釋挪到上面來
12、nmake,speed.c繼續報錯
?//GmSSL-GmSSL-v2_2\GmSSL-GmSSL-v2\apps\speed.c
3502行的?size_t len = loopargs[i].cipherlen;len = loopargs[i].cipherlen;
1537行添加int len=0;
?
13、繼續nmake,沒報錯,直到出現下圖代表編譯成功
?14、nmake install一路刷屏自動換行,結束
?15、bin、include和lib全部已經生成
?
?16、xp win7 win10測試,可直接運行
//xp sp3
//win7 32位?
?//win7 64位
//win10 64位 32位