MinGW64编译OpenSSL
引言
用Qt写爬虫的时候,缺少openssl的动态库,试了几个已有的版本都不对,于是从官网下载了对应版本的源码自己编译。
准备
环境
我的Qt原工程环境是,
- MinGW7.3.0-x64(gcc version 7.3.0 (x86_64-posix-seh-rev0, Built by MinGW-W64 project))
- Qt5.13.0
链接
我这边Qt内的链接库是支持openssl1.1.1.b的,这属于一个老版本,
OpenSSL链接
过程
源码下载下来,解压即可。
查看README,
它会让你去看对应平台的NOTES文件,我这边是windows下的mingw编译,就找到NOTES.WIN,
找到mingw编译的段落,
我这边就是编出来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下(当然其他目录也行)。
此时,你可以在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与构建环境相匹配,所以简单说,就是要用msys2的软件包工具安装perl。
输入pacman -S perl
进行安装,
因为资源问题,下载过程中,有些链接可能下载过慢,会被判定为连接不上,而下载失败。这时候多试几次,或者连上VPN试几次。直到下载安装成功。
安装成功后,再进入openssl目录下make,一般就会成功了(但是,可能你的工具路径中会有不符合unix风格的命名,比如Program files,这里Program和file之间有个空格,这种命名在上面的perl中似乎是不允许的,也会报错,你需要把提示路径改变成符合unix风格的路径,处理完这种情况后,一般就会编译正确)。
Note:
总的来说,要注意的就是,
- perl版本要与环境相匹配
- perl涉及的文件(包括调用时用到的工具)路径必须是unix风格的
最后按照正常的工程构建步骤,./configure mingw64,make就成功了。
总结
编译一定要按照工程文档中说的来,坑很多。
MinGW64编译OpenSSL相关推荐
- windows下MinGW编译openssl库(64位、32位)图文解析
环境:windows10 64位 工具链:MinGW64 IDE:CLion MinGW编译openssl 有两种方式获取到动态库: 一种是自己编译,编译源码 一种是在msys下安装openssl库的 ...
- 如何在Windows下编译OpenSSL?
OpenSSL是一个开源的第三方库,它实现了SSL(Secure SocketLayer)和TLS(Transport Layer Security)协议,被广泛企业应用所采用.对于一般的开发人 ...
- bat脚本+vs2019编译openssl(x86 | x64) - (static | shared) - (debug | release)
一.准备工作(perl, nasm, cygwin) 工作需要,我要以(x86 | x64) - (static | shared) - (debug | release)选项编译openssl,最终 ...
- Windows下编译openssl库
1.概述 OpenSSL是一个开放源代码的软件库包,它实现了 SSL(Secure SocketLayer)和 TLS(Transport Layer Security)协议,所以应用程序可以使用这个 ...
- 如何在Windows下编译OpenSSL
OpenSSL是一个开源的第三方库,它实现了SSL(Secure SocketLayer)和TLS(Transport Layer Security)协议,被广泛企业应用所采用.对于一般的开发人员而言 ...
- 【转】iOS编译OpenSSL静态库(使用脚本自动编译)
原文网址:https://www.jianshu.com/p/651513cab181 本篇文章为大家推荐两个脚本,用来iOS系统下编译OpenSSL通用库,如果想了解编译具体过程,请参看<iO ...
- 在Windows下编译OpenSSL(VS2005)【转】
如何在Windows下编译OpenSSL (Vs2005使用Vc8的cl编译器) 1.安装ActivePerl//初始化的时候,需要用到perl解释器 2.使用VS2005下的Visual Studi ...
- 64位Win7下用VS2010编译OpenSSL
http://blog.csdn.net/henter/article/details/8364532 首先要说明,如果不想自己编译OpenSSL,可以到 http://slproweb.com/pr ...
- Windows 下编译 OpenSSL
简述 OpenSSL 是一个开源的第三方库,它实现了 SSL(Secure SocketLayer)和 TLS(Transport Layer Security)协议,被广泛企业应用所采用.对于一般的 ...
最新文章
- eclipse 源码设置UTF-8 (eclipse可以为JSP HTML 等各种文件不同编码格式设置) 在windows - preference- general-workspace
- 2019年,人工智能要落地,更要小心被“摔死”
- 传输协议不安全,数据泄露谁之过?——流量劫持技术分析
- 收集一些常用的正则表达式
- Gunicorn 0.17 发布,Python HTTP 服务器
- java map去重复的数据_使用HashMap去重复数据.
- 跟着川川学数模-Day2
- [读码][js,css3]能感知鼠标方向的图片遮罩效果
- 去中心化数据库Bluzelle公布2021年路线图,将于2月3日上线主网
- 全球五十家知名传感器制造商分布盘点、特点分析
- 数电快速入门(三)(卡诺图化简法的介绍)
- [羊城杯 2020]A Piece Of Java
- Grafana-reporter定时报表
- oracle php 教程 pdf,AJAX+PHP+Oracle数据库Web开发 ((美)Lee Barney) 中文PDF扫描版 37.5M
- 中文数字转换成阿拉伯数字(一千二百三十四万五千六百七十八-->12345678)
- 年会必备:18套年会快闪PPT
- 家里用服务器放在哪个位置,家用路由器放在什么位置比较合理?
- OpenMeetings安装
- 11_FreeRTOS时间片调度实验
- Python selenium新窗口和老窗口的切换