Qt And Openssl交叉编译

1. Openssl交叉编译

Openssl交叉编译

2. Qt交叉编译链接Openssl

Qt的交叉编译参考Qt交叉编译,只是需要修改一下configure的配置参数,具体配置如下:

#!/bin/sh

OPENSSL_LIBS='-L/home/pgs/openssl102_Arm/lib -lssl -lcrypto' \
./configure \
-openssl-linked \
-I/home/pgs/openssl102_Arm/include \
-L'/home/pgs/openssl102_Arm/lib -Wl,-rpath=/home/pgs/openssl102_Arm/lib' \
--prefix=/home/pgs/Qt5.9.7_Arm \
-opensource \
-confirm-license \
-xplatform linux-arm-gnueabi-g++ \
-release \
-v \
-pch \
-sql-sqlite \
-qt-libjpeg \
-qt-zlib \
-qt-libpng \
-qt-freetype \
-no-glib \
-no-sse2 \
-no-cups \
-no-opengl \
-no-iconv \
-nomake examples \
-skip qtdoc \
-skip qtandroidextras \
-skip qtpurchasing \
-skip qtgamepad \
-skip qtsvg \
-skip qtwebchannel \
-skip qtwebengine \
-tslib \
-I/home/pgs/tslib1.19_Arm/include \
-L/home/pgs/tslib1.19_Arm/lib \

exit

比较Qt交叉编译的configure配置可以发现关于链接openssl的只是需要添加以下几个配置语句:

OPENSSL_LIBS='-L/home/pgs/openssl102_Arm/lib -lssl
-openssl-linked
-I/home/pgs/openssl102_Arm/include
-L'/home/pgs/openssl102_Arm/lib -Wl,-rpath=/home/pgs/openssl102_Arm/lib'

官方文档Secure Sockets Layer (SSL) Classes针对添加openssl的介绍中给出的方案是按照如下进行configure配置即可:

OPENSSL_LIBS='-L/opt/ssl/lib -lssl -lcrypto' ./configure -openssl-linked

所以根据官方文档介绍,我一开始的配置是:

#!/bin/sh

OPENSSL_LIBS='-L/home/pgs/openssl102_Arm/lib -lssl -lcrypto' \
./configure \
-openssl-linked \
--prefix=/home/pgs/Qt5.9.7_Arm \
-opensource \
-confirm-license \
-xplatform linux-arm-gnueabi-g++ \
-release \
-v \
-pch \
-sql-sqlite \
-qt-libjpeg \
-qt-zlib \
-qt-libpng \
-qt-freetype \
-no-glib \
-no-sse2 \
-no-cups \
-no-opengl \
-no-iconv \
-nomake examples \
-skip qtdoc \
-skip qtandroidextras \
-skip qtpurchasing \
-skip qtgamepad \
-skip qtsvg \
-skip qtwebchannel \
-skip qtwebengine \
-tslib \
-I/home/pgs/tslib1.19_Arm/include \
-L/home/pgs/tslib1.19_Arm/lib \

exit

这上面是完全按照QT官方文档进行的配置,对此配置我遇到了如下错误:

  • configure配置错误 

查看config.log看到找不到openssl的头文件及库,因此添加:

-I/home/pgs/openssl102_Arm/include
-L/home/pgs/openssl102_Arm/lib

如果则configure通过,并且openssl选项打开。

  • make编译缺少Openssl的相关定义 

这些定义都是在库文件中实现的,而上面已经指定了库文件路径已然报错,那么就应该是库文件指定有问题。根据错误提示使用-rpath,根据网上查找-L是指定链接时的库文件,-rpath是指定运行是的库文件。一般是只需要-L即可,但既然报错了那就添加-rpath,同时根据网上资料也加上-Wl

-L'/home/pgs/openssl102_Arm/lib -Wl,-rpath=/home/pgs/openssl102_Arm/lib'

make正常通过。
移植后测试是否支持ssl:QSslSocket::supportsSsl();

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:技术黑板 设计师:CSDN官方博客 返回首页
评论

打赏作者

技术上攀爬的小虫子

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值