Linux Qt5.9.X版本下的交叉编译(openssl + sqlite)

前言:

本人是在Rockchip RV1109的开发板上开发,需要交叉编译Qt5开发https,Qt5本身是支持openssl,但是不同版本的Qt5所支持的openssl版本有所不同。开发板所支持的是Qt5.9.4,openssl版本为1.0版本,本人亲自测试过openssl高版本的,发现交叉编译存在问题,openssl高版本部分接口做了一些修改,因此,Qt5.12版本以下的最好选择1.0版本去适配。

一、系统环境说明:

1.Ubuntu 20.04 LTS

备注:本人在该系统下操作的,其他尚未实践

二、准备工作:

1、GCC编译官网下载:

Linaro Releases

GCC编译包:gcc-linaro-6.5.0-2018.12-x86_64_arm-linux-gnueabihf.tar.xz

备注:这个编译包看个人的开发环境而定,我这里以该编译工具包为例

2、openssl官网下载:

/source/old/1.0.0/index.html

openssl以下面为例:

3、sqlite官网下载:

SQLite Download Page

这里选择Source Code下的sqlite-autoconf-xxxxxxx.tar.gz(版本随意)

4、Qt5开源包官网下载:

Index of /archive/qt/5.9/5.9.4/single

Qt5.9.4以下面为例:

三、交叉编译:

1、解压gcc编译包、openssl压缩包、sqlite压缩包、Qt5开源包

博主比较懒,解压我就不详细说明了~~

2、openssl交叉编译

a.创建build.sh脚本

if(你觉得你nb,这个脚本可以不创建){

        直接在解压后的openssl目录输入指令设置

}else{

        在这个脚本写以下内容:

#!/bin/sh

./Configure linux-armv4 no-asm shared --prefix=这里就放你需要安装的路径

         将这个脚本放在解压后的openssl同级目录下,不清楚的,你可以看看这个Configure在哪里,放在有这个的目录下就好了,最后运行脚本。

}

b.编译安装

在make之前需要修改Makefile文件,这里说明一下,低版本的openssl的
Configure设置还不是很人性化,当然Linux很多东西本来就麻烦

修改Makefile:

如果你跟博主是下载openssl-1.0.0版本的,请你输入gedit Makefile,拉到62行

这里修改CC、AR、RANLIB、NM、MAKEDEPPROG参数。

if(你不懂){

        说明你是刚接触Linux的小白

        刚刚下载的GCC编译,你可以查看里面的bin,将路径填上去即可

        例如:CC=/home/michael/Linux_QT/gcc-linaro-6.5.0-2018.12-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc

        (这里我是举例子,你要根据你自身的路径去填写,后面的AR、RANLIB等等也一样,只是后缀gcc换成ar、ranlib等等而已)

        这个MAKEDEPPROG就填写CC的路径即可

}else{

        return;

}

修改完之后:

make -j4
make install

安装过程中可能会出现以下错误:

 

按照网上流行的说法,将这个/usr/bin/pod2man删掉,再编译。

安装成功后你可以进去你所安装的目录下,file ./lib/libcrypto.so.1.0.0

查看一下交叉编译是否成功

3、Sqlite交叉编译

这个比较简单,同理也是建立一个脚本,大神另说。

touch build.sh
gedit build.sh

 编辑build.sh

#!/bin/sh

./configure --prefix=你要安装的路径 \
--host=arm-linux-gnueabihf CC=/home/michael/Linux_QT/gcc-linaro-6.5.0-2018.12-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc

build.sh里面的host参数,我是arm-linux-gnueabihf的,CC是你gcc编译器路径
同理,在解压路径下运行脚本,make -j4, make install

4、Qt5.9.4交叉编译

如果你看到这里,你会发现一些规律了,Linux安装开源包都会有设置指令让你配置快速配置Makefile,这里真的写得我想吐了。

创建build.sh脚本,这里我不详细讲了

build.sh内容:

#!/bin/sh
OPENSSL_LIBS='-L你安装好的openssl路径下的lib目录 -lssl -lcrypto'
./configure -prefix Qt安装的路径 \
-opensource \
-debug \
-confirm-license \
-xplatform linux-arm-gnueabi-g++ \
-pch \
-linuxfb \
-no-opengl \
-shared \
-no-iconv \
-no-xcb \
-sqlite \
-qt-zlib \
-openssl-linked -I openssl路径下的include目录 -L openssl路径下的lib目录 \
-recheck-all

修改Qt文件:

cd qt-everywhere-opensource-src-5.9.4/qtbase/mkspecs/linux-arm-gnueabi-g++
gedit qmake.conf

qmake.conf:

#
# qmake configuration for building with arm-linux-gnueabi-g++
#

MAKEFILE_GENERATOR      = UNIX
CONFIG                 += incremental
QMAKE_INCREMENTAL_STYLE = sublib

include(../common/linux.conf)
include(../common/gcc-base-unix.conf)
include(../common/g++-unix.conf)

QT_QPA_DEFAULT_PLATFORM=linuxfb
QMAKE_INCDIR += sqlite路径下的include目录 openssl路径下的include目录
QMAKE_LIBDIR += sqlite路径下的lib目录 openssl路径下的lib目录

# modifications to g++.conf
#根据自己的GCC编译路径来定
QMAKE_CC                = 你的GCC路径下的arm-linux-gnueabihf-gcc
QMAKE_CXX               = 你的GCC路径下的arm-linux-gnueabihf-g++
QMAKE_LINK              = 你的GCC路径下的arm-linux-gnueabihf-g++
QMAKE_LINK_SHLIB        = 你的GCC路径下的arm-linux-gnueabihf-g++

# modifications to linux.conf
QMAKE_AR                = 你的GCC路径下的arm-linux-gnueabihf-ar cqs
QMAKE_OBJCOPY           = 你的GCC路径下的arm-linux-gnueabihf-objcopy
QMAKE_NM                = 你的GCC路径下的arm-linux-gnueabihf-nm -P
QMAKE_STRIP             = 你的GCC路径下的arm-linux-gnueabihf-strip
load(qt_config)

修改完之后,返回Qt5.9.4路径下运行build.sh脚本

make -j4
make install

过程比较漫长,请耐心等待

交叉编译完成后,如果你要开发https,那么你需要在你的Qt项目中添加-lssl -lcrypto这两个库

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在编译 Qt 5.12.12 源码时,需要先编译 OpenSSL 库,并将其加入 Qt 的编译选项中。以下是静态编译 Qt 5.12.12 包括 OpenSSL 的步骤: 1. 下载并编译 OpenSSL 库 您可以从 OpenSSL 官网下载最新的源码包,例如 `openssl-1.1.1i.tar.gz`。下载后,解压缩并进入目录,执行以下命令进行编译: ``` ./config no-shared --prefix=/path/to/openssl make && make install ``` 其中,`/path/to/openssl` 为您安装 OpenSSL 的路径。 2. 下载并解压 Qt 5.12.12 源码 您可以从 Qt 官网下载 Qt 5.12.12 的源码包,例如 `qt-everywhere-src-5.12.12.tar.xz`。下载后,解压缩至任意目录。 3. 配置 Qt 的编译选项 进入 Qt 源码目录,执行以下命令进行配置: ``` ./configure -static -prefix /path/to/qt -openssl-linked OPENSSL_PREFIX=/path/to/openssl -no-openssl ``` 其中,`/path/to/qt` 为您要安装 Qt 的路径,`/path/to/openssl` 为您安装 OpenSSL 的路径。 此命令中,`-static` 表示静态编译,`-prefix` 指定 Qt 安装路径,`-openssl-linked` 表示链接 OpenSSL 库,`OPENSSL_PREFIX` 指定 OpenSSL 的安装路径,`-no-openssl` 表示不使用 Qt 自带的 OpenSSL 库。 4. 编译 Qt 执行以下命令进行编译: ``` make -j4 ``` 其中,`-j4` 表示使用 4 个线程进行编译,可以根据自己的 CPU 核心数进行调整。 5. 安装 Qt 执行以下命令进行安装: ``` make install ``` 此命令会将编译好的 Qt 安装至指定路径。 至此,静态编译 Qt 5.12.12 并包括 OpenSSL 完成。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值