openssl1.0.2版本Windows安装问题

之前安装过1.1版本,Windows环境下C++ 安装OpenSSL库 源码编译及使用(VS2019)_vs2019安装openssl_肥宝Fable的博客-CSDN博客

后来发现linux编译不过,以为是版本问题,相差太大,所以降一下版本,以免后面写代码有问题。

当然结果发现是没有配链接的库:

Linux环境下C++ 接入OpenSSL-CSDN博客

不过安装1.0.2版本的时候,发现还是有很多坑的,所以记录下来以免后面还是踩坑。

流程可能稍微缩减了一下,由于安装1.1版本的时候,已经装了好多配套的东西,这里不再重复叙述,参考上面1.1版本的文章就好。可能有些东西是多余的。

另外网上找到解决问题的参考文章:

Windows 编译 openssl-1.0.2p静态库 32/64、debug/release、MT/MTd-腾讯云开发者社区-腾讯云

以下是正文:

根据需要编译的平台选择相应的控制台,64位的选择x64,32位的选择x86

执行:

cpp 复制代码
perl Configure VC-WIN32 no-asm --debug --prefix=E:\xxx\common\openSSL --openssldir=E:\xxx\common\ssl

结果并没有跟1.1版本的那样输出,不过好像并没有报错

跟着

cpp 复制代码
nmake

然后就提示错误了,

makefile(243) : fatal error U1001: 语法错误: 宏中的非法字符"{"

找了好久都没找到问题,后来直接搜版本才搜到点东西,

需要修改 ms/do_nasm.bat 文件,将原来

cpp 复制代码
perl util\mkfiles.pl >MINFO
perl util\mk1mf.pl nasm VC-WIN32 >ms\nt.mak
perl util\mk1mf.pl dll nasm VC-WIN32 >ms\ntdll.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

修改为:

cpp 复制代码
perl util\mkfiles.pl >MINFO
perl util\mk1mf.pl nasm debug VC-WIN32 >ms\nt.mak
perl util\mk1mf.pl dll nasm debug VC-WIN32 >ms\ntdll.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

就是将第二行和第三行编译选项增加了 debug 。修改完成后执行 ms/do_nasm.bat

cpp 复制代码
.\ms\do_nasm.bat

直接搬别人的图了,懒得再执行一次了。

修改完成执行如下命令开始编译

cpp 复制代码
nmake -f ms\nt.mak

lib文件在out32.dbg目录下,libeay32.lib、ssleay32.lib

执行完之后,发现只有lib,没有dll文件

要修改 ms\ntdll.mak 将 CFLAG 的 /MDd 属性修改为 /MTd,与你调用项目匹配):

cpp 复制代码
nmake -f ms\ntdll.mak

这一步不知道是会直接生成lib和dll还是只生成dll的。

执行完之后,dll文件在out32dll.dbg

补充一点:dll文件是第二天才搞出来的。编译出lib之后,拿去编译项目工程,发现能编译过了,然后运行的时候,发现没有dll文件居然也可以运行。而且已经很晚了就没继续搞了。

后来越想越不对劲,肯定要dll文件的,全局搜索一下,发现好多软件都自带libeasy32.dll和ssleay32.dll,如果有哪个路径是在环境变量中的,应该会被搜索到。所以我还是趁还记得,编译了一下dll文件放到工程对于目录里面了。

相关推荐
湖南罗泽南2 小时前
Windows C++ TCP/IP 两台电脑上互相传输字符串数据
c++·windows·tcp/ip
小奥超人2 小时前
PPT技巧:如何合并PPT文件?
windows·经验分享·microsoft·powerpoint·办公技巧
MarcoAI3 小时前
github SSH连接(windows)
windows·ssh·github
天幕繁星18 小时前
docker desktop es windows解决vm.max_map_count [65530] is too low 问题
windows·elasticsearch·docker·docker desktop
百锦再19 小时前
详解基于C#开发Windows API的SendMessage方法的鼠标键盘消息发送
windows·c#·计算机外设
IT-民工2111021 小时前
Ansible剧本检测Windows防火墙状态
linux·运维·windows·自动化·ansible
菜鸟江多多1 天前
【windows 下使用 tree】
windows
星晨羽1 天前
esayExcel根据模板导出包含图片
java·开发语言·windows
开发者每周简报1 天前
当微软windows的记事本被AI加持
人工智能·windows·microsoft
命里有定数1 天前
windows工具 -- 使用rustdesk和云服务器自建远程桌面服务, 手机, PC, Mac, Linux远程桌面 (简洁明了)
linux·运维·服务器·windows·ubuntu·远程工作