gmssl vs2010編譯

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/win64icon-default.png?t=N7T8https://www.nasm.us/pub/nasm/releasebuilds/2.16.03/win64/?ActivePerl官網要注冊,華軍下載:ActivePerl下載_ActivePerl(Perl執行工具)官方中文版下載-華軍軟件園icon-default.png?t=N7T8https://www.onlinedown.net/soft/8364.htm

?3、github下載gmssl-v2官方庫;

https://github.com/guanzhi/GmSSL/tree/GmSSL-v2icon-default.png?t=N7T8https://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位

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/17582.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/17582.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/17582.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Unity 之 Android 【獲取設備的序列號 (Serial Number)/Android_ID】功能的簡單封裝

Unity 之 Android 【獲取設備的序列號 (Serial Number)/Android_ID】功能的簡單封裝 目錄 Unity 之 Android 【獲取設備的序列號 (Serial Number)/Android_ID】功能的簡單封裝 一、簡單介紹 二、獲取設備的序列號 (Serial Number) 實現原理 1、Android 2、 Unity 三、注意…

九型人格介紹

協調型人格 作為“好好先生”的何炅是典型的協調型人格者,他總是將大家的利益放在第一位,很少顧及自己的感受;當他周圍的人產生沖突時,他總是力圖找到一個有利于雙方的解決方案;本著息事寧人的態度,他對利益的追逐和向往很低&…

gem5模擬器入門(一)——環境配置

什么是gem5? gem5是一個模塊化的離散事件驅動的計算機系統模擬器平臺。這意味著: GEM5 的組件可以輕松重新排列、參數化、擴展或更換,以滿足您的需求。它將時間的流逝模擬為一系列離散事件。它的預期用途是以各種方式模擬一個或多個計算機系…

掌握并發控制的“急剎車”藝術!

當一個線程運行時,另外一個線程可以直接通過interrupt方法對其設置中斷標志位。 判斷線程是否中斷的2個方法: // 判斷目標線程是否被中斷,不會清除中斷標記。 Thread.currentThread().isInterrupted() // 判斷目標線程是否被中斷,…

【職業教育培訓機構小程序】教培機構“招生+教學”有效解決方案

教培機構“招生教學”有效解決方案在數字化轉型的浪潮中,職業教育培訓機構面臨著提升教學效率、拓寬招生渠道、增強學員互動等多重挑戰。小程序作為一種新興的移動應用平臺,為解決這些痛點提供了有效途徑。 一、職業教育培訓機構小程序的核心功能 &…

Laravel 圖片添加水印

和這個配合使用 Laravel ThinkPhP 海報生成_laravel 制作海報-CSDN博客 代碼 //水印 $x_length $imageInfo[0]; $y_length $imageInfo[1];$color imagecolorallocatealpha($posterImage, 255, 255, 255, 70); // 增加透明度參數alpha$font_size 40; //字體大小 $angle …

HTML靜態網頁成品作業(HTML+CSS)——家鄉沅陵介紹網頁(1個頁面)

🎉不定期分享源碼,關注不丟失哦 文章目錄 一、作品介紹二、作品演示三、代碼目錄四、網站代碼HTML部分代碼 五、源碼獲取 一、作品介紹 🏷?本套采用HTMLCSS,未使用Javacsript代碼,共有1個頁面。 二、作品演示 三、代…

條款9:利用destructors避免泄露資源

對指針說拜拜。承認吧,你從未真正喜歡過它,對不? 好,你不需要對所有指針說拜拜,但是你真的得對那些用來操控局部性資源(local resources)的指針說莎唷娜拉了。 舉個例子,你正在為“小動物收養…

Flutter 中的 CircularProgressIndicator 小部件:全面指南

Flutter 中的 CircularProgressIndicator 小部件:全面指南 在 Flutter 應用開發中,加載指示器是提供用戶反饋的重要組成部分,特別是在需要等待數據加載的場景中。CircularProgressIndicator 是 Flutter 提供的一個表現圓形加載動畫的小部件。…

Python進階:探索Python標準庫和第三方庫

在前兩篇文章中,我們介紹了Python的基本語法和面向對象編程。在這篇文章中,我們將深入探索Python的標準庫以及一些常用的第三方庫。Python的強大之處不僅在于其簡潔的語法,還在于豐富的庫生態系統。通過使用這些庫,你可以更高效地完成各種任務,從文件操作到數據分析、網絡…

godot4.2 + GDextension c++在 vs code 中斷點調試配置

游戲開發中如果做不到自己編寫的代碼做斷點調試,無不是瞎子摸象,特別是C這么底層的語言。這2天開始在VS studio中折騰,一直折騰不出結果,幾次想要放棄GODOT。最終今天在VS code中搞定了這斷點調試C代碼。 在上一篇文章我已經做好了…

React hooks - useContext

useContext 用法使用以非侵入的方式使用 Context使用 useContext 重構 useReducer 案例 用法 實現多層組件的數據傳遞 在全局創建 Context 對象在父組件中使用 Context.Provider 提供數據在子組件中使用 useContext 使用數據 import React, { useContext } from react // 全局…

全網爆火Remini 粘土濾鏡風格,我用ComfyUI一鍵生成了(保姆級教程)!

一、火爆全網的Remini! Remini真的火爆了!最近大家的朋友應該都被粘土濾鏡刷屏了。 小紅書上粘土濾鏡、粘土特效的帖子動不動就是幾百萬瀏覽量,幾千贊。 在有些電商平臺上還有人接單,幫忙定制remini粘土風格的照片! …

解釋瀏覽器緩存和本地存儲的區別,以及如何實現事件的防抖和節流

1:瀏覽器緩存和本地存儲的區別: 瀏覽器緩存:瀏覽器緩存是一種臨時性的數據存儲,用于提高網頁加載速度。緩存的數據存儲在內存或磁盤中,當用戶再次訪問相同的資源時,瀏覽器會優先從緩存中讀取數據,而不是從服務器重新請求。緩存的數據可以在瀏覽器關閉后自動清除,或者根據 HTT…

vue+three.js實現3d系統的搭建

1.首先node.js是12.22版本的,安裝three.js可以參考這篇文章 直接用Threejs入門-安裝教程_安裝three.js-CSDN博客 直接在終端安裝three.js即可 npm install --save three 在相同目錄下安裝vite構建工具 npm install --save-dev vite 在項目里面看package.json中…

神秘顧客調查:第三方渠道監測如何操作?

第三方渠道監測是指通過專業的第三方機構或服務商,對企業的銷售渠道進行系統化的監督和評估。這種監測幫助企業了解各渠道的表現,確保合規性,提升市場競爭力。深圳神秘顧客市場調查限公司(SMS)總結了第三方渠道監測的操…

【安裝筆記-20240528-Linux-在 Vultr 云服務器上安裝 OpenWRT】

安裝筆記-系列文章目錄 安裝筆記-20240528-Linux-在 Vultr 云服務器上安裝測試 OpenWRT 文章目錄 安裝筆記-系列文章目錄安裝筆記-20240528-Linux-在 Vultr 云服務器上安裝測試 OpenWRT 前言一、軟件介紹名稱:OpenWRT主頁官方介紹 二、安裝步驟測試版本&#xff1a…

多function-calling 調用

多function-calling 調用 接上一篇function-calling調用,本篇實現了一個多function-calling的調用。OpenAI會根據function的描述自己來判斷應該調用哪個function。最終調用function的動作是由我們來決定的,當然你也可以不調對應的函數。 兩個函數分別是…

案例研究|MeterSphere助力萬物云構建高效自動化測試平臺

萬物云空間科技服務股份有限公司(以下簡稱為“萬物云”),前身為萬科物業發展股份有限公司,是國內領先的物管龍頭上市公司。作為一家科技引領的全域空間服務商,萬物云致力于打造產業級共享服務平臺,基于空間…

1. lambda初體驗

首先聲明一個函數式接口,就只接口內只有一個抽象方法 //函數式接口 public interface Factory {Object getObject();}接口實現類 public class SubClass implements Factory {Overridepublic Object getObject() {return new User();}}User類 public class User …