linux环境交叉编译openssl库,以使Qt支持https

一.前言

Qt若需要支持https,则需要openssl的支撑,并且要注意,Qt不同版本会指定对应的openssl版本库,比方我用的Qt5.15.10他要求用的openssl版本是1.1.1,你就不能用其他版本,不然基本就是失败报错。
如何查看Qt对应openssl的版本呢?
在程序可以执行的任何地方加上这两句

include <QSslSocket>
//查看需要的openssl版本
QString strVersion = "QSslSocket="<<QSslSocket::sslLibraryBuildVersionString();
 //查看是否支持
bool bExist = (QSslSocket::supportsSsl() == true ? "true" : "false");

在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文件夹
进入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环境

  • 6
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在 Linux 系统上进行交叉编译带有 X11 的 ARM 架构的 Qt 应用程序,您需要遵循以下步骤: 1. 安装交叉编译工具链 您需要从 ARM 架构的供应商处获取交叉编译工具链,然后将其安装在 Linux 系统上。这个工具链可以让您将 Qt 应用程序编译成 ARM 架构的二进制文件。 2. 下载 Qt SDK 您需要从 Qt 官方网站下载适用于 ARM 架构的 Qt SDK。确保您选择了适当的版本,并下载相应的源代码和二进制文件。 3. 配置 Qt 在运行 configure 脚本之前,您需要设置一些环境变量,例如交叉编译工具链的路径和 Qt 的路径。使用以下命令设置这些变量: ``` export CC=arm-linux-gcc export CXX=arm-linux-g++ export PATH=/path/to/cross-compiler/bin:$PATH export PKG_CONFIG_PATH=/path/to/qt/lib/pkgconfig ``` 然后,在 Qt 源代码目录下运行 configure 脚本: ``` ./configure -prefix /path/to/qt \ -embedded arm \ -xplatform linux-arm-gnueabi-g++ \ -no-glib \ -no-cups \ -no-pch \ -no-largefile \ -no-accessibility \ -no-gtkstyle \ -no-pulseaudio \ -no-alsa \ -no-sm \ -no-xinerama \ -no-xkb \ -no-xinput \ -no-xvideo \ -no-xsync \ -no-xrandr \ -no-xcursor \ -no-xfixes \ -no-xshape \ -no-xdamage \ -no-xrender \ -no-xinput2 \ -no-xkbcommon \ -no-icu \ -no-openssl \ -no-fontconfig \ -no-harfbuzz \ -no-gstreamer \ -no-opengl \ -no-opengles \ -no-eglfs \ -no-directfb \ -no-kms \ -no-linuxfb \ -no-mirclient \ -no-wayland \ -no-vulkan \ -no-widgets \ -no-qml-debug \ -qt-libjpeg \ -qt-libpng \ -qt-freetype \ -qt-zlib ``` 在配置过程中,您需要输入一些参数,例如交叉编译工具链的路径和 Qt 的路径。根据您的需求进行选择。 4. 编译 Qt 在成功配置 Qt 后,您可以使用以下命令来编译 Qt: ``` make -j4 ``` 其中,“-j4”参数指定使用 4 个线程进行编译。您可以根据需要适当调整线程数。 5. 测试 Qt 在编译完成后,您可以使用以下命令来测试 Qt: ``` make check ``` 这个命令将运行 Qt 的测试套件。如果所有测试都通过,则说明 Qt 成功编译。 6. 编译应用程序 现在,您可以使交叉编译工具链来编译您的 Qt 应用程序了。使用以下命令来编译应用程序: ``` arm-linux-g++ -o app main.cpp -I/path/to/qt/include -L/path/to/qt/lib -lQtGui -lQtCore -lX11 ``` 其中,“main.cpp”是您的应用程序的源代码文件,而“-I/path/to/qt/include”和“-L/path/to/qt/lib”参数分别指定 Qt 头文件和文件的路径。最后,“-lQtGui -lQtCore -lX11”参数指定要链接的 Qt 和 X11 。 希望这些步骤能够帮助您成功地交叉编译带有 X11 的 ARM 架构的 Qt 应用程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值