MinGW64编译OpenSSL

引言

 用Qt写爬虫的时候,缺少openssl的动态库,试了几个已有的版本都不对,于是从官网下载了对应版本的源码自己编译。

准备

环境

 我的Qt原工程环境是,

  1. MinGW7.3.0-x64(gcc version 7.3.0 (x86_64-posix-seh-rev0, Built by MinGW-W64 project))
  2. Qt5.13.0

链接

 我这边Qt内的链接库是支持openssl1.1.1.b的,这属于一个老版本,
OpenSSL链接

过程

 源码下载下来,解压即可。
 查看README,
install
 它会让你去看对应平台的NOTES文件,我这边是windows下的mingw编译,就找到NOTES.WIN,
找到mingw编译的段落,
mingwCompile
 我这边就是编出来windows上用,所以按照说明先按照msys2环境,msys2,下载安装了64位版本的。msys2是一个模拟的Linux命令行开发环境。msys2里本身就带了mingw,但是保险起见,上面段落也提到,最好用自己开发环境的mingw。所以需要把你自己环境下的mingw导入到msys2中。这边只需要要在你windows系统变量中创建一个 Windows 环境变量 MSYS2_PATH_TYPE=inherit,msys2就会继承win系统的环境变量,去找寻win下已经配置好的mingw工具(需要重启shell窗口)。msys2命令行中输入gcc,没有提示找不到文件就说明成功了。
 msys2中的home可以看作是你自己一个自由使用的目录(它里面没有太多系统或者其它的东西),这边建议你把openssl源码工程移到/home下(当然其他目录也行)。
home
 此时,你可以在msys2下使用自己的mingw了(使用命令名依你的mingw32-make.exe名字而定),但是此时在openssl工程目录下使用./configure mingw64配置编译,会提示缺少perl。

	/usr/bin/perl:bad interpreter:No such file or directory

 如果你从网上随便下载一个perl,然后msys2引用它,再配置,会发现报错,缺少dmake等等。工程目录下的NOTES.PERL中有说明,
perl
严格要求perl与构建环境相匹配,所以简单说,就是要用msys2的软件包工具安装perl。
输入pacman -S perl 进行安装,
pacman
因为资源问题,下载过程中,有些链接可能下载过慢,会被判定为连接不上,而下载失败。这时候多试几次,或者连上VPN试几次。直到下载安装成功。
installPerl
 安装成功后,再进入openssl目录下make,一般就会成功了(但是,可能你的工具路径中会有不符合unix风格的命名,比如Program files,这里Program和file之间有个空格,这种命名在上面的perl中似乎是不允许的,也会报错,你需要把提示路径改变成符合unix风格的路径,处理完这种情况后,一般就会编译正确)。
Note:
总的来说,要注意的就是,

  1. perl版本要与环境相匹配
  2. perl涉及的文件(包括调用时用到的工具)路径必须是unix风格的

最后按照正常的工程构建步骤,./configure mingw64,make就成功了。
compileSuccess

总结

 编译一定要按照工程文档中说的来,坑很多。

发布了60 篇原创文章 · 获赞 18 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/BadAyase/article/details/103921608