您当前的位置: 首页 >  ssl

龚建波

暂无认证

  • 3浏览

    0关注

    312博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

记录:MSVC编译OpenSSL1.0.x和OpenSSL1.1.x

龚建波 发布时间:2019-08-28 16:30:05 ,浏览量:3

为了能在qt中访问https,msvc编译器版本的需要自己编译openssl。幸运的是网上有很多相关的博客,所以直接照着做就是了。

0.准备工作

先从网上下载OpenSSL源文件,我是在这里下载的 http://distfiles.macports.org/ 。

安装Perl http://www.perl.org/get.html (我用的64bit的,感觉没影响)。

1.MSVC2015编译OpenSSL 1.0.1 32bit

对于Qt5.9.8,链接的是OpenSSL 1.0.2p,我编译了1.0.f和1.0.s版本,都能访问https,只是对于1.1.x的dll貌似不支持。

编译步骤:

  • 在VS开发人员命令提示框中,cd到openssl原文件目录
  • 执行perl Configure VC-WIN32 no-asm (64位是VC-WIN64A,我没装nasm汇编器所以去掉asm,如需要指定路径请参考别人的设置,如填写--prefix="C:/openssl-1.1.0f/win64-release" --openssldir="C:/openssl-1.1.0f/win64-release/ssl" )
  • 执行ms\do_ms.bat (生成makefile,64位是ms\do_win64a.bat ) 
  • 执行nmake -f ms\nt.mak (编译动态库)
  • 执行nmake - f ms\ntdll.mak test (查看库是否有问题)
  • 执行nmake - f ms\ntdll.mak install (copy到安装目录,我没执行这个,直接去out32dll文件夹copy的动态库)

在Qt5.9.8中的使用,直接copy生成的libeay32.dll和ssleay32.dll到程序运行目录,就能正常使用了。

参考博客:https://blog.csdn.net/alger_magic/article/details/52584171

参考博客:https://blog.csdn.net/u010129119/article/details/52815441

2.MSVC2015编译OpenSSL 1.1.1 32bit和64bit

对于Qt5.12.4,链接的是OpenSSL 1.1.1b,虽然默认也能访问https,但是会有sslerror信息的信号发出来。

1.1.x32bit和1.0.x32bit的编译过程差不都,如下:

  • 在VS开发人员命令提示框中,cd到openssl原文件目录
  • 执行perl Configure VC-WIN32 shared no-asm 
  • 执行nmake
  • 执行nmake test (这一步我会在70-test_comp.t的地方卡住,我直接关了窗口,然后去拿的dll)

(遇到个问题就是我环境变量中的rc路径和他的冲突了,我把环境变量删了就过了)

1.1.x64bit编译时,遇到了一些小问题,一个是到set asm=m164报错(我明明设置了no-asm),我直接下载了一个nasm装上然后设置好环境变量;另一个是提示和目标计算机32位不兼容,我就打开的“vs2015 x64本机工具命令提示符”窗口(正确的姿势是设置配置文件,但是秉着能用就行的态度,我就没去折腾了),接下来就和32位是一样的步骤了。

在Qt5.12.4中的使用,直接copy生成的libcrypto-1_1-x64.dll和libssl-1_1-x64.dll到程序运行目录,即可(我是MSVC2015 - 64bit)。

参考博客:https://morton.li/visualstudio2015%E7%BC%96%E8%AF%91openssl-1-1-0i/

参考博客:https://blog.51cto.com/fengyuzaitu/2150487

参考博客:https://blog.csdn.net/ljttianqin/article/details/72978612

3.MSVC2019编译OpenSSL

这次我直接clone的github的源文件,结果因为没注意版本编译出来的不能用(心塞),不过流程应该是差不多的。

对于32位的流程如下:

  • 打开VS x86提示框,跳转到openssl源文件目录下
  • 执行perl Configure VC-WIN32 shared no-asm --prefix="D:/openssl/build32" --openssldir="D:/openssl/ssl32"
  • 修改makefile文件,如果有 /WX 的话去掉,不然32位会报c2220错误)
  • nmake
  • nmake test (奇怪的是在vs2019没像vs2015那样卡在某一步)
  • nmake install
  • 前面的步骤出错后nmake clean清除重来

VC-WIN32我一开始写成了VC-WIN64A,结果报m164错误(我用的x86命令行)。如果是VC-WIN32用x86命令行也报这个错误,我想我只能靠装个nasm了。

在某个版本,我报c2220这个错误,修改makefile注释掉/WX后即可

另外,如果出现 link 之类的错误,可以看看编译设置和自己的命令行窗口是不是都是x86的,这个应该也可以通过配置文件来修改(略)。

对于64位的流程如下:

  • 打开VS x64提示框,跳转到openssl源文件目录下
  • 执行perl Configure VC-WIN64A shared no-asm --prefix="D:/openssl/build32" --openssldir="D:/openssl/ssl32"
  • nmake
  • nmake test 
  • nmake install
关注
打赏
1655829268
查看更多评论
立即登录/注册

微信扫码登录

0.1223s