【Linux】交叉编译qt并移植到ARM平台

编译主机: Ubuntu20.04
Qt源码版本: qt-everywhere-opensource-src-5.15.2.tar.gz
交叉编译工具: arm-linux-gnueabihf-gcc

1、下载解压,然后cd到文件夹下

tar -vzxf qt-everywhere-opensource-src-5.15.2.tar.gz
cd qt-everywhere-opensource-src-5.15.2

2.修改交叉编译架构用到的信息

(1).cd到如下目录,ls可以看到qt支持的交叉编译器列表

cd qt-everywhere-opensource-src-5.15.2/qtbase/mkspecs/
ls

(2).一定要找到自己实际使用的编译器,这里是arm-linux-gnueabihf-gcc,发现没有这个目录,没关系,我们创建一个

mkdir arm-linux-gnueabihf-gcc

(3).然后复制其他平级文件夹中的两个文件qmake.confqplatformdefs.h到这个目录下
在这里插入图片描述
(4).打开qmake.conf,修改一下你的交叉编译器的绝对路径,和需要预编译的模块路径,如tslibTF显示屏模块和sqlite数据库模块,这里单独去编译,不在此赘述

#
# qmake configuration for building with arm-linux-gnueabihf-g++
#
 
MAKEFILE_GENERATOR      = UNIX
CONFIG                 += incremental
QMAKE_INCREMENTAL_STYLE = sublib
 
QT_QPA_DEFAULT_PLATFORM = linux #eglfs
QMAKE_CFLAGS_RELEASE += -O2 -march=armv7-a
QMAKE_CXXFLAGS_RELEASE += -O2 -march=armv7-a
 
 
include(../common/linux.conf)
include(../common/gcc-base-unix.conf)
include(../common/g++-unix.conf)
 
QMAKE_INCDIR += /opt/tslib/include /opt/sqlite3/include   #指定头文件,需预编译
QMAKE_LIBDIR += /opt/tslib/lib /opt/sqlite3/lib           #指定库文件,需预编译

# modifications to g++.conf
QMAKE_CC                = /usr/local/arm/arm-gcc/bin/arm-linux-gnueabihf-gcc -lts
QMAKE_CXX               = /usr/local/arm/arm-gcc/bin/arm-linux-gnueabihf-g++ -lts
QMAKE_LINK              = /usr/local/arm/arm-gcc/bin/arm-linux-gnueabihf-g++ -lts
QMAKE_LINK_SHLIB        = /usr/local/arm/arm-gcc/bin/arm-linux-gnueabihf-g++ -lts
 
# modifications to linux.conf
QMAKE_AR                = /usr/local/arm/arm-gcc/bin/arm-linux-gnueabihf-ar cqs
QMAKE_OBJCOPY           = /usr/local/arm/arm-gcc/bin/arm-linux-gnueabihf-objcopy
QMAKE_NM                = /usr/local/arm/arm-gcc/bin/arm-linux-gnueabihf-nm -P
QMAKE_STRIP             = /usr/local/arm/arm-gcc/bin/arm-linux-gnueabihf-strip
load(qt_config)

3.编写生成Makefile的脚本
(1).cd到qt源码根目录
(2).新建一个autoConfigure.sh脚本

#!/bin/sh
./configure \
-v \
-prefix /opt/qt-5.15.2 \
-release \
-opensource \
-no-accessibility \
-make libs \
-xplatform arm-linux-gnueabihf-g++ \ 
-optimized-qmake \
-pch \
-qt-sql-sqlite \    
-qt-zlib \
-skip qtdeclarative \
-no-opengl \
-no-sse2 \
-no-openssl \
-no-cups \
-no-glib \
-no-pkg-config \
-no-separate-debug-info  \
-tslib \
-I/opt/tslib/include \
-L/opt/tslib/lib                      

-xplatform arm-linux-gnueabihf-g++ \ #这个名字要与2.(2)中创建的目录名字一致,否则检索不到,一般与编译器同名,但未必,需注意

c-qt-sql-sqlite \需预编译,如果没有提前编译,执行脚本会报如下错误,下面的-tslib \同理

ERROR: Invalid value given for boolean command line option 'sql-sqlite'.

(3).运行脚本

 ./autoConfigure.h

在这里插入图片描述
完成,qt源码根目录已生成Makefile

3.编译
(1).在源码根目录make

make

(2).生成可移植的库到/opt/qt.5.15.2

make install

/opt/qt-5.15.2下可看到如下文件夹,说明编译成功
在这里插入图片描述

  • 6
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
移植Qt MQTT 到 ARM Linux 平台上需要以下几个步骤: 1. 安装交叉编译工具链:在Linux下,我们需要安装适用于ARM架构的交叉编译工具链,例如arm-linux-gnueabihf。这个工具链将会提供编译Qt和其它依赖库所需的工具和环境。 2. 下载Qt源码:从Qt官方网站上下载适用于ARM LinuxQt源码。选择适合您的版本和需要的模块。确保选择支持MQTT的模块。 3. 配置编译选项:解压源码后,使用命令行进入源码目录。运行`configure`脚本来配置编译选项,例如指定交叉编译工具链和目标平台。确保选择MQTT模块和适当的依赖库,在这种情况下是Paho MQTT C库和OpenSSL库。 4. 运行make:在配置完成后,运行`make`命令来编译Qt源码。这个过程可能会需要一段时间,具体取决于您的电脑性能和源码大小。 5. 安装Qt编译完成后,使用`make install`命令来安装Qt到指定的路径。确保您选择正确的安装路径,以便在ARM Linux上使用。 6. 创建Qt MQTT项目:现在,您可以在ARM Linux上创建基于Qt MQTT的项目了。使用Qt Creator工具创建一个新项目,并在项目配置中添加必要的库和模块。确保设置正确的编译器和目标平台。 7. 编译和部署:通过Qt Creator编译和构建项目。然后,将生成的可执行文件和任何依赖的库文件复制到ARM Linux设备上。确保正确配置和安装依赖库,包括Paho MQTT C库和OpenSSL库。 8. 测试和调试:最后,在ARM Linux设备上运行和测试您的Qt MQTT应用程序。使用调试工具(例如GDB)来调试任何可能出现的问题,确保应用程序正常运行。 通过以上步骤,您应该能够成功将Qt MQTT移植ARM Linux平台上,并在设备上运行和测试。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

外来务工人员徐某

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

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

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

打赏作者

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

抵扣说明:

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

余额充值