一.前言
Qt若需要支持https,则需要openssl的支撑,并且要注意,Qt不同版本会指定对应的openssl版本库,比方我用的Qt5.15.10他要求用的openssl版本是1.1.1,你就不能用其他版本,不然基本就是失败报错。
如何查看Qt对应openssl的版本呢?
在程序调用http处加上这两句
include <QSslSocket>
//查看需要的openssl版本
QString strVersion = "QSslSocket="<<QSslSocket::sslLibraryBuildVersionString();
//查看是否支持
bool bExist = (QSslSocket::supportsSsl() == true ? "true" : "false");
二.windows环境
1.在windows环境中需要安装openssl,并将openssl释放的“libcrypto”和“libssl”的库打包进你的程序依赖目录中,比如我用的openssl1.1.1g版本,那就将该版本openssl安装后,取出其安装目录下的“libcrypto-1_1.dll”和“libssl-1_1.dll”放置在我们自己的程序依赖目录下即可。
openssl1.1.1g版本的windows安装包(如果需要源码包,可在下文Linux环境叙述中的openssl的源码包下载)
将上图中安装目录下的这两个库取出来放在你的程序目录
三.Linux环境
在Linux下Qt要支持https,原理也是一样,需要依赖openssl。如果开发板上
就需要先交叉编译openssl,再交叉编译Qt,以保证其支持ssl。以下介绍Linux环境下怎么源码编译openssl。
环境准备:
Ubuntu :18.04;
openssl 1.1.1.g;
交叉编译链:aarch64-none-linux-gnu-gcc
openssl1.1.1g源码包下载地址
1.解压
tar xzvf openssl-1.1.1g.tar.gz
2.进入openssl文件夹
3.查看交叉编译链路径
4.配置config
./config no-asm shared no-async --prefix=/usr/local/openssl1.1.1g-Arm --cross-compile-prefix=/opt/gcc-arm-10.3-linux-gnu/bin/aarch64-none-linux-gun-
注意:
no-asm: 在交叉编译过程中不使用汇编代码代码加速编译过程.原因是它的汇编代码是对arm格式不支持的;
shared: 生成动态连接库;
no-async: 交叉编译工具链没有提供GNU C的ucontext库;
–prefix=: 安装路径,编译完成install后将有bin,lib,include等文件夹;
–cross-compile-prefix=: 交叉编译工具。
5.修改makefile文件
用vim打开Makefile;
修改 PLATFORM=linux-x86-x64 为 PLATFORM=arm;
去掉“-m64”
6.make编译
使用make -j4进行编译,可能报错,查看如果是报错没权限,改用sudo make -j4;
7.安装
执行安装命令 make install,安装可能报错说找不到你指定的安装目录,这是也是由于没权限,改为sudo make install 安装;
安装完成,对应目录下安装了openssl的库文件。
接下来就是引用openssl来交叉编译Qt源码库,参考这篇文章Ubuntu中完成Linux环境Qt源码交叉编译并配置Qt环境