【自记录】VS2022编译OpenSSL1.0.2u

因为突然要编译一个老工程,老工程里面用到了OpenSSL 1.0.x。

于是官网下载了最后一个1.0.x版本1.0.2u。

1 下载安装Perl

Perl官网下载即可。

使用vcpkg直接安装也可以,比前者更方便

bat 复制代码
vcpkg install perl
#根据实际路径调整
set PATH=D:\vcpkg\downloads\tools\perl\5.32.1.1\perl\bin;%PATH%

2 编译

本来想打开Developer Command Prompt后简单的运行

bat 复制代码
perl Configure VC-WIN32
ms\do_ms.bat

结果意外的收到这个报错

bat 复制代码
tmp32\sha1-586.asm(1576) : error A2070:invalid instruction operands

do_ms.bat中本来明确的声明了no-asm,怎么会还在编译asm文件呢?

搜索看到了这个帖子,有人给出了答案:
https://github.com/openssl/openssl/issues/169

  1. 新版本的VS已不支持no-asm模式
  2. 使用nasm可跳过该问题。

可以在官网下载最新版本,或使用vcpkg安装。我直接用之前编译Qt时自动下载的,也能用。直接放在openssl的源码目录下即可。

根据正确答案进行改造,一并输出动态库和静态库的release/debug版本

shell 复制代码
perl Configure VC-WIN32
perl util\mkfiles.pl >MINFO
perl util\mk1mf.pl nasm VC-WIN32 >ms\nt.mak
perl util\mk1mf.pl nasm debug VC-WIN32 >ms\nt_dbg.mak
perl util\mk1mf.pl nasm dll VC-WIN32 >ms\ntdll.mak
perl util\mk1mf.pl nasm debug dll VC-WIN32 >ms\ntdll_dbg.mak
perl util\mk1mf.pl nasm BC-NT >ms\bcb.mak

perl util\mkdef.pl 32 libeay > ms\libeay32.def
perl util\mkdef.pl 32 ssleay > ms\ssleay32.def
nmake -f ms\nt.mak
nmake -f ms\nt_dbg.mak
nmake -f ms\ntdll.mak
nmake -f ms\ntdll_dbg.mak

#下面的可以不做,如果做了,默认会在你驱动器的根目录下,例如e:\usr\local下
nmake -f ms\nt.mak install
nmake -f ms\nt_dbg.mak install
nmake -f ms\ntdll.mak install
nmake -f ms\ntdll_dbg.mak install
相关推荐
Smile丶凉轩14 小时前
C++实现主从Reactor模型实现高并发服务器面试题总结
服务器·开发语言·c++
Hard but lovely14 小时前
linux: pthread库---posix线程创建使用接口&&状态
linux·开发语言·c++
.简.简.单.单.14 小时前
Design Patterns In Modern C++ 中文版翻译 第八章 组合
java·c++·设计模式
喜欢吃燃面15 小时前
算法竞赛中的数据结构:图
开发语言·数据结构·c++·学习·算法
哈市雪花15 小时前
记录一次cmake无法正确使用vcpkg的问题
开发语言·c++
小李小李快乐不已15 小时前
贪心算法理论基础
c++·算法·leetcode·贪心算法
Trouvaille ~15 小时前
【C++篇】C++11新特性详解(三):高级特性与实用工具
开发语言·c++·stl·lambda·完美转发·包装器·可变参数模版
C语言小火车15 小时前
【C++】从零开始构建C++停车场管理系统:技术详解与实战指南
开发语言·c++·毕业设计·课程设计
.简.简.单.单.15 小时前
Design Patterns In Modern C++ 中文版翻译 第九章 装饰器
开发语言·c++·设计模式
橘颂TA15 小时前
【剑斩OFFER】算法的暴力美学——两数相加
c++·算法·结构与算法