基于Windows手动编译openssl和直接安装openssl

零、环境

win10-64位 + VS2019

一、手动编译

前言:对于一般的开发人员而言,在 openssl 上下载已经编译好的 openssl 库,然后直接拿去用即可,,不用手动编译,{见下文直接安装}。。。对于一些开发人员,可能需要修改openssl源码,那么编译它势在必行。。。

1、安装perl

https://platform.activestate.com/ActiveState-Projects/ActiveState-Perl-5.36.0

在这里插入图片描述

两种方法都没能成功。。第一种下载后会得到一个 state-remote-installer.exe,然后安装时会在命令行中执行,,命令行中输入Y会继续下载,,,下载极慢,,放弃。。
第二种执行命令直接报错如下所示。
在这里插入图片描述
总的来说,通过官网给定的方式去倒腾,都不好搞。。。
于是,走第三方去下载,,http://www.xz7.com/downinfo/43699.html

下载速度非常之快。。
安装完毕后,会自动添加至环境变量。
此时打开cmd,输入 perl -v,输出如下,表示安装成功。
在这里插入图片描述

2、 下载安装nasm
https://www.nasm.us/
在这里插入图片描述
在这里插入图片描述

此处下载2.16.01稳定版本。
安装完毕,将安装目录添加至系统环境变量中,输入nasm -v,输出以下表示安装成功。

在这里插入图片描述

3、下载安装openssl
openssl官网
在这里插入图片描述
此处下载1.1.1b.tar.gz版本。

4、开始编译
以管理员身份运行vs2019-64bit命令行工具,因为此处要编译成64位的库。
然后切换到解压后的目录中。
在这里插入图片描述

perl Configure VC-WIN64A  --prefix=D:\openssl111b\openssl-1.1.1b\bin

注意 ,–prefix必须为绝对路径, 否则报错。
开始执行命令,结果报错如下:

D:\openssl111b\openssl-1.1.1b>perl Configure VC-WIN64A  --prefix=D:\openssl111b\openssl-1.1.1b\bin
Configuring OpenSSL version 1.1.1b (0x1010102fL) for VC-WIN64A
Using os-specific seed configuration
Can't locate Win32/Console.pm in @INC (you may need to install the Win32::Console module) (@INC contains: D:/openssl111b/openssl-1.1.1b/util/perl D:/openssl111b/perlInstall/site/lib D:/openssl111b/perlInstall/lib) at D:/openssl111b/perlInstall/site/lib/ActivePerl/Config.pm line 400.
Compilation failed in require at D:/openssl111b/perlInstall/site/lib/ExtUtils/MakeMaker.pm line 9.
BEGIN failed--compilation aborted at D:/openssl111b/perlInstall/site/lib/ExtUtils/MakeMaker.pm line 9.
Compilation failed in require at D:/openssl111b/perlInstall/site/lib/IPC/Cmd.pm line 235.

需要修改perl安装目录下的文件。
D:/openssl111b/perlInstall/site/lib/ActivePerl/Config.pm
ps:若不知道自己的安装位置,可借助Everything进行全局搜索。。。
在这里插入图片描述

找到后修改此文件,注释395-413行左右的代码,如下所示:
在这里插入图片描述
此时再次执行上述命令,openssl的配置已经结束,makefile已经生成,如下所示。
在这里插入图片描述
然后执行 nmake ,等待编译完成,,,
紧接着执行name install,此时将安装到之前配置时指定的bin目录,,,
安装完毕,去bin目录查看安装后的及结果。。。,如下所示,已经分门别类的安装好了。。。

在这里插入图片描述

二、直接安装

现在直接下载openssl的exe版本,版本号是:Win64 OpenSSL v1.1.1v Light
https://slproweb.com/products/Win32OpenSSL.html

在这里插入图片描述
在这里插入图片描述
安装中会有以下提示,默认即可。
在这里插入图片描述
实际我最关心的就是这两个库了。因为https建立连接的时候需要用到它。

三、顺便解决一个Qt报错

程序中会访问https://50.50.1.118服务。采用https协议,需要openssl支持。。
编译套件是:Qt5.13-MSVC2017-64bit。

    qDebug() << QSslSocket::supportsSsl();qDebug()<<"QSslSocket="<<QSslSocket::sslLibraryBuildVersionString();

在这里插入图片描述
报错:qt.network.ssl: QSslSocket::connectToHostEncrypted: TLS initialization failed。
很明显,此时并不支持ssl,就是缺少openssl的库。

在这里插入图片描述

实际上就是缺少上面的两个库。

此时,运行QT程序,,一切正常,,不再报错了。。

在这里插入图片描述
如果还是不行,建议直接将这两个库拷贝到 E:\Qt5.13.1\install\5.13.1\msvc2017_64\bin目录下。。。
当然程序打包的时候也别忘了要拷过去。

四、参考博客

OpenSSL之六:OpenSSL源码编译安装
Windows 下编译 OpenSSL

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/22795.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

查看gz文件 linux zcat file.gz mtx.gz

可以使用以下命令来查看 gz 压缩文件的内容&#xff1a; zcat file.gz 1 该命令会将 file.gz 文件解压并输出到标准输出&#xff0c;可以通过管道符将其与 grep 命令结合使用来查找需要的关键词&#xff0c;例如&#xff1a; zcat file.gz | grep keyword 1 该命令会将 file.gz…

Electron 开发,报handshake failed; returned -1, SSL error code 1,错误

代码说明 在preload.js代码中&#xff0c;暴露参数给渲染线程renderer.js访问&#xff0c; renderer.js 报&#xff1a;ERROR:ssl_client_socket_impl.cc(978)] failed; returned -1, SSL error code 1,错误 问题原因 如题所说&#xff0c;跨进程传递消息&#xff0c;这意味…

学习单片机的秘诀:实践与坚持

在学习单片机时&#xff0c;将实践与学习结合起来是一个很好的方法。不要一上来就死磕指令和名词&#xff0c;而是边学边做实验&#xff0c;循序渐进地理解和应用指令。通过实验&#xff0c;你能亲身感受到指令的控制效果&#xff0c;增强对单片机的理解和兴趣。 学习单片机不…

Android Ble蓝牙App(二)连接与发现服务

Ble蓝牙App&#xff08;二&#xff09;连接与发现服务 前言正文一、GATT回调二、连接和断连三、连接状态回调四、发现服务五、服务适配器六、显示服务七、源码 前言 在上一篇中我们进行扫描设备的处理&#xff0c;本文中进行连接和发现服务的数据处理&#xff0c;运行效果图如下…

AI量化模型预测——baseline学习笔记

一、赛题理解 1. 赛题名称 AI量化模型预测 2. 赛题理解 本赛事是一个量化金融挑战&#xff0c;旨在通过大数据与机器学习的方法&#xff0c;使用给定的训练集和测试集数据&#xff0c;预测未来中间价的移动方向。参赛者需要理解市场行为的原理&#xff0c;创建量化策略&#…

element表格+表单+表单验证结合u

一、结果展示 1、图片 2、描述 table中放form表单&#xff0c;放输入框或下拉框或多选框等&#xff1b; 点击添加按钮&#xff0c;首先验证表单&#xff0c;如果存在没填的就验证提醒&#xff0c;都填了就向下添加一行表单表格&#xff1b; 点击当前行删除按钮&#xff0c;…

剑指Offer05.替换空格

剑指Offer05.替换空格 目录 剑指Offer05.替换空格题目描述解法一&#xff1a;遍历添加解法二&#xff1a;原地修改 题目描述 请实现一个函数&#xff0c;把字符串s中的每个空格都替换成“%20”。 解法一&#xff1a;遍历添加 由于每次替换都要把一个空格字符变成三个字符&a…

Godot 4 源码分析 - 碰撞

碰撞功能应该是一个核心功能&#xff0c;它能自动产生相应的数据&#xff0c;比如目标对象进入、离开本对象的检测区域。 基于属性设置&#xff0c;能碰撞的都具备这样的属性&#xff1a;Layer、Mask. 在Godot 4中&#xff0c;Collision属性中的Layer和Mask属性是用于定义碰撞…

Unity 编辑器选择器工具类Selection 常用函数和用法

Unity 编辑器选择器工具类Selection 常用函数和用法 点击封面跳转下载页面 简介 在Unity中&#xff0c;Selection类是一个非常有用的工具类&#xff0c;它提供了许多函数和属性&#xff0c;用于操作和管理编辑器中的选择对象。本文将介绍Selection类的常用函数和用法&#xff…

伊语IM即时通讯源码/im商城系统/纯源码IM通讯系统安卓+IOS前端纯原生源码

伊语IM即时通讯源码/im商城系统/纯源码IM通讯系统安卓IOS前端纯原生源码&#xff0c; 后端是java源码。

2.4 网络安全新技术

数据参考&#xff1a;CISP官方 目录 云计算安全大数据安全移动互联网安全物联网安全工业互联网安全 一、云计算安全 1、云计算定义 云计算是指通过网络访问可扩展的、灵活的物理或虚拟共享资源池&#xff0c;并按需自助获取和管理资源的模式。在云计算中&#xff0c;计算资…

深度学习之双线性插值

1、单线性插值 单线性插值是一种用于估计两个已知数据点之间未知点的方法。它基于线性关系&#xff0c;通过计算目标位置的值&#xff0c;使用已知点之间的线性函数进行插值。这在图像处理中常用于放缩、旋转等操作&#xff0c;计算简单&#xff0c;产生平滑结果&#xff0c;但…

小白也能懂!业务中台与数据中台究竟是什么?

大家好&#xff0c;今天我们要讨论的是业务中台与数据中台&#xff0c;或许你对这些名词还不太熟悉&#xff0c;但别担心&#xff0c;接下来我将为你详细解释这两个概念&#xff0c;并且用通俗易懂的语言来解释它们。 业务中台是什么&#xff1f; 首先&#xff0c;让我们来了解…

ubuntu搭建wifi热点,共享网络(x86、arm相同)

目录 1 首先检查网络管理器服务是否开启 &#xff08;ubuntu需要界面&#xff09; 2 创建并配置需要共享的wifi 首先&#xff0c;明确下这篇文章说的是啥&#xff0c;是为了在ubuntu系统的电脑上&#xff0c;搭建一个wifi热点&#xff0c;供其他移动设备连接上网。就像你…

java实现钉钉群机器人@机器人获取信息后,机器人回复(机器人接收消息)

1.需求 鉴于需要使用钉钉群机器人回复&#xff0c;人们提出的问题&#xff0c;需要识别提出的问题中的关键词&#xff0c;后端进行处理实现对应的业务逻辑 2.实现方式 用户群机器人&#xff0c;附带提出的问题&#xff0c;后端接收消息后识别消息内容&#xff0c;读取到关键…

第3章 数据和C

本章介绍以下内容&#xff1a; 关键字&#xff1a;int 、short、long、unsigned、char、float、double、_Bool、_Complex、_Imaginary 运算符&#xff1a;sizeof() 函数&#xff1a;scanf() 整数类型和浮点数类型的区别 如何书写整型和浮点型常数&#xff0c;如何声明这些类型的…

ImagXpress .NET Standard Crack

ImagXpress .NET Standard Crack ImagXpress SDK可让您快速将图像功能添加到Windows应用程序中。您可以快速开发需要复杂成像任务的应用程序&#xff0c;用于文档成像、照片处理或医疗应用程序&#xff0c;同时专注于您的程序的独特需求。ImagXpress是开发涉及图像的专业应用程…

Windows下JDK安装与环境变量配置

文章目录 每日一句正能量前言安装步骤配置环境变量验证环境变量是否配置成功后记 每日一句正能量 生命,就像一场永无休止的苦役,不要惧怕和拒绝困苦,超越困苦,就是生活的强者。任何经历都是一种累积,累积的越多,人就越成熟;经历的越多,生命就越有厚度。 本来不想写JDK的安装的&…

SAP 动态编程-动态获取结构字段对象(类模式)

实施方法 GET_DYNAMIC_FIELD_OBJECT 参数 代码 DATA: lt_source TYPE TABLE OF string.DATA: lv_name TYPE sy-repid VALUE ZTEMP_GET_DYNAMIC_OBJECT,lv_form(30) TYPE c VALUE FRM_GENERATE_OBJECT,lv_message(240) TYPE c,lv_line TYPE i,lv_word(72…

通过Idea部署Tomcat服务器(详细图文教学)

1.在idea中创建项目 有maven构建工具就创建maven&#xff0c;没有就正常创建一个普通的java程序 创建普通java项目 2.添加框架 3.配置 Tomcat 注意&#xff1a;创建web项目后我们需要配置tomcat才能运行&#xff0c;下面我们来进行配置。 4.添加部署 回到服务器 5.完善配置 6…