OpenSSL 3.0 版本已经发布VS2019编译源码教程
1 OpenSSL 3.0版本在2020年五月发布
OpenSSL3.0 在2020年5月发布了第一个版本,随即在六月份又发布了一些alpha版本,版本修正了一些bug,增加了一些协议支持,继续支持国密sm2 ,sm3 ,sm4(从1.1.1版本开始支持)。
3.0版本完全兼容1.1.1版本接口,但低级别的MD2, MD4, MD5, MDC2,SHA1, SHA224, SHA256, SHA384, SHA512,AES,DES,ECDH,DSA,ECDSA,RSA接口都会被警告将要被弃用。但文档中没有提及要用什么接口替换,估计是全部用EVP接口替换,我在项目中基本都替换为了EVP接口。
2 OpenSSL 3.0版本使用VS2019编译过程
2.1 OpenSSL3.0 源码下载
源码可以到官方网站或者直接使用git进行下载
下载地址 ffmpeg.vip
或者使用git下载版本库上最新源码
git clone git://git.openssl.org/openssl.git
2.2 依赖工具安装
安装 perl 脚本解释器
下载 http://openssl.vip/download
安装 nasm 汇编器
默认会安装到用户目录
C:\Users\用户名\AppData\Local\bin\NASM
配置windows的环境变量,将此路径加入到环境变量path中
安装好后,重新打开控制台能够运行nasm 和perl命令
2.3 编译工具:VS2019社区版本
下载地址 http://openssl.vip/download 安装社区版本,安装后注册个用户就可以免费使用。
2.4 编译步骤
(1)进入控制台(运行 CMD),或者编写批处理bat文件
或者直接运行菜单中的vs2019 命令行编译工具,选择相应的版本(x86和x64)
(2)运行vs编译环境
打开菜单中VS2019中有对应的命令行工具,把地址复制过来
编译32位库版本
"c:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvars32.bat"
编译64位库版本
"c:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvars64.bat"
(3)进入openssl源码吗目录
cd openssl-3.0.0-alpha2
(4)使用perl生成makefile文件
perl Configure { VC-WIN32 | VC-WIN64A | VC-WIN64I | VC-CE } --prefix=%OUTPATH%
perl Configure VC-WIN32
VC-WIN32 表示生成32位程序 --prefix 是编译后输出的路径,默认会生成到C:\Program Files (x86)目录,因为要写到C盘,有可能会出错,如果控制台不是管理员方式运行
(5)用nmake编译
#编译库源码
nmake
#编译测试程序
nmake test
# 安装openssl
nmake install
将编译好的文件安装到指定目录,默认是C:\Program Files (x86)\OpenSSL,如果是在C盘,运行控制台是需要有管理员权限
2.5 编译中的一些错误
'perl' 不是内部或外部命令,也不是可运行的程序
需要安装perl
NMAKE : fatal error U1064: 未找到 MAKEFILE 并且未指定目标
perl 生成makefile失败,可以清理掉重新生成,或者替换参数重新生成
NASM not found - make sure it's installed and available on %PATH%
安装nasm或者配置取消nasm
It looks like you don't have either nmake.exe or dmake.exe on your PATH, so you will not be able to execute the commands from a Makefile. You can install dmake.exe with the Perl Package Manager by running:
需要安装下载安装dmake
ppm install dmake
运行时错误:OPENSSL_Uplink(0FB024F8,08): no OPENSSL_Applink
复制applink.c文件到头文件路径#include <openssl/applink.c>
要观看全部内容请点击c++实战区块链核心密码学-基于openssl
https://ke.qq.com/course/2737429?tuin=10eec75