基于ARM的通用的Qt移植思路

news2024/11/25 10:59:05

文章目录

  • 实验环境介绍
  • 一、确认Qt版本
  • 二、确认交叉编译工具链
  • 三、配置Qt
    • 3.1、修改qmake.conf
    • 3.2、创建autoConfig.sh配置文件
  • 四、编译安装Qt
  • 五、移植Qt安装目录
  • 六、配置Qt creator
    • 6.1、配置qmake
    • 6.2、配置GCC编译器
    • 6.3、配置G++编译器
    • 6.4、配置编译器套件
    • 6.5、创建应用
  • 七、总结

实验环境介绍

硬件:韦东山T113工业开发板
软件:Tina5.0 SDK

一、确认Qt版本

无论在什么平台,第一件事先确认Qt版本,用哪个就下载哪个。比如项目需要使用Qt5.15.9,那么就下载Qt5.15.9的源码:
image.png
解压源码:

tar -xvf qt-everywhere-opensource-src-5.15.9.tar.xz

二、确认交叉编译工具链

交叉编译工具链的确认需要参考目标平台的架构和Qt的版本。比如,我的Qt程序是要放到arm开发板上运行,那就选择arm交叉编译工具链。然而,Qt5.15.9对gcc版本的要求是要大于5,那么所选的arm交叉编译工具链的gcc版本就要高于5。
所以此例中,我所使用的arm交叉编译工具链为gcc-linaro-7.2.1-2017.11-x86_64_arm-linux-gnueabi,该工具链的gcc版本为7.2.1
image.png
交叉编译工具链下载好后,设置环境变量:

export ARCH=arm
export CROSS_COMPILE=arm-linux-gnueabi-
export PATH=$PATH:/t113/gcc-linaro-7.2.1-2017.11-x86_64_arm-linux-gnueabi/bin/

三、配置Qt

3.1、修改qmake.conf

进入mkspecs目录:

cd qt-everywhere-src-5.15.9/qtbase/mkspecs

image.png
该目录包含了一系列与平台编译器设置相关的文件夹,我的目标平台是arm架构,那么就修改linux-arm-gnueabi-g++目录下的qmake.conf:

vi linux-arm-gnueabi-g++/qmake.conf

这里将工具链前缀修改成我们所要用的工具链前缀:
image.png

3.2、创建autoConfig.sh配置文件

进入Qt源码根目录,创建配置文件autoConfig.sh:

cd qt-everywhere-src-5.15.9
vi autoConfig.sh

autoConfig.sh内容如下:

./configure \
-xplatform linux-arm-gnueabi-g++ \
-prefix /opt/qt/qtresource/qt5.15.9 \
-release \
-opensource \
-skip qtwayland \
-skip qtlocation \
-skip qtscript \
-make libs \
-optimized-qmake \
-no-opengl \
-no-sse2 \
-no-openssl \
-no-cups \
-no-glib \
-no-pkg-config \
-no-separate-debug-info \
-pch \
-shared \
-qt-libjpeg \
-qt-zlib \
-qt-libpng

-xplatform linux-arm-gnueabi-g++指定了目标平台和工具链。-prefix指定安装目录。其它的都是一些关于Qt的配置选项。
最后执行配置文件进行配置:

./autoConfig.sh

四、编译安装Qt

配置完成后,开始编译:

make -j8

编译成功后,开始安装:

make install

安装路径即为上面所指定的/opt/qt/qtresource/qt5.15.9

五、移植Qt安装目录

本文主要讲述通用的Qt移植,以便以后在不同平台移植Qt。
1、在任意位置创建一个文件夹,这里命名为:Qt-5.15.9,该文件夹将放置所有关于应用程序的支持,如动态库、插件、字体等。

mkdir Qt-5.15.9

2、将安装目录下的bin、lib、plugins目录复制到Qt-5.15.9:

cp -r /opt/qt/qtresource/qt5.15.9/bin Qt-5.15.9
cp -r /opt/qt/qtresource/qt5.15.9/lib Qt-5.15.9
cp -r /opt/qt/qtresource/qt5.15.9/plugins Qt-5.15.9

3、如果项目中有特殊的字体文件,也一并复制到该文件夹:

cp -r fonts Qt-5.15.9

4、想办法将Qt-5.15.9文件夹弄到开发板,可以直接复制,或通过rootfs overlay的方式。位置随意,我放到了/usr/local/目录:
image.png
5、编写用于设置Qt环境变量的开机自启脚本,内容可参考如下:

#!/bin/sh

export QTDIR=/usr/local/Qt-5.15.9
export QT_ROOT=$QTDIR

export PATH=$QTDIR/bin:$PATH
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
export QT_PLUGIN_PATH=$QT_ROOT/plugins

export QT_QPA_PLATFORM=linuxfb:tty=/dev/fb0
export QT_QPA_FONTDIR=$QT_ROOT/fonts

export QT_QPA_EVDEV_TOUCHSCREEN_PARAMETERS=/dev/input/event5

六、配置Qt creator

6.1、配置qmake

image.png

6.2、配置GCC编译器

image.png

6.3、配置G++编译器

步骤同上。

6.4、配置编译器套件

image.png

6.5、创建应用

至此,配置结束。可以自行创建应用程序,编译应用,传到开发板进行验证。

七、总结

至此,Qt移植结束。
参考文章:自动驾驶开发入门(一)—交叉编译64位Qt5.15 (aarch64)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1872097.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MySQL 主从复制集群高可用

在实际的生产环境中,如果对数据库的读和写都在同一个数据库服务器中操作,无论是在安全性、高可用性还是高并发等各个方面都是完全不能满足实际需求的。因此,一般来说 都是通过主从复制(Master-Slave)来同步数据&#x…

微信小程序毕业设计-线上教育商城系统项目开发实战(附源码+论文)

大家好!我是程序猿老A,感谢您阅读本文,欢迎一键三连哦。 💞当前专栏:微信小程序毕业设计 精彩专栏推荐👇🏻👇🏻👇🏻 🎀 Python毕业设计…

基于STM32F103最小系统板和DL-LN33 2.4G通信 ZigBee无线串口自组网采集温湿度

文章目录 前言一、组网概述二、产品特性三、电气特性四、引脚配置五、UART通信协议5.1 UART参数5.2 包分割5.3 端口5.4 举例通信5.4.1 一个节点给另一个节点发送数据5.4.2 一个节点给另一个节点的内部端口发送数据5.4.3 一个节点给自己的内部端口发送数据5.4.4 不推荐的数据传输…

【单片机毕业设计选题24033】-基于STM32的智能饮水机设计

系统功能: 系统上电后显示“欢迎使用智能饮水系统请稍后”两秒后进入正常显示页面。 第一页面第一行显示“系统状态信息”,第二行显示温湿度信息,第三行显示 水温&水位值,第四行显示系统状态(锁定或解锁状态)。…

World of Warcraft [CLASSIC] Level 70 Dire Maul (DM)

[月牙钥匙] [大型爆盐炸弹] World of Warcraft [CLASSIC] Level 70 厄运之槌,完美贡品,Dire Maul (DM) Foror‘s Compendium of Dragon Slaying 佛洛尔的屠龙技术纲要 因为不是兽王宝宝,而且开始位置放的不对&am…

【python011】经纬度点位可视化html生成(有效方案)

1.熟悉、梳理、总结项目研发实战中的Python开发日常使用中的问题、知识点等,如获取省市等边界区域经纬度进行可视化,从而辅助判断、决策。 2.欢迎点赞、关注、批评、指正,互三走起来,小手动起来! 3.欢迎点赞、关注、批…

输出100以内的质数

质数&#xff1a;只能被1和自身整除的数 let count; for(let i2; i<100; i){for(let j1; j<i; j){if(i % j 0){// 只要能被整除&#xff0c;count就加1count;}} if(count 2) {// 从1到自身被整除完之后&#xff0c;如果count只有两次&#xff0c;则说明i为质数co…

应急响应靶机-Linux(1)

前言 本次应急响应靶机采用的是知攻善防实验室的Linux-1应急响应靶机 靶机下载地址为&#xff1a; https://pan.quark.cn/s/4b6dffd0c51a 相关账户密码&#xff1a; defend/defend root/defend 解题 第一题-攻击者的IP地址 先找到的三个flag&#xff0c;最后才找的ip地址 所…

等保必须要做?不做等保可行吗?

网络安全等级保护&#xff08;简称“等保”&#xff09;是中国国家网络安全的基本制度&#xff0c;对网络运营者提出了明确的法律义务和责任。根据《中华人民共和国网络安全法》第二十一条规定&#xff1a;“国家实行网络安全等级保护制度。网络运营者应当按照网络安全等级保护…

枫清科技创始人高雪峰:不取侥幸之利,做难而正确的事!丨数据猿专访

大数据产业创新服务媒体 ——聚焦数据 改变商业 金庸有一本著作叫做《侠客行》&#xff0c;这部武侠小说的主角叫做石破天&#xff0c;他从小的时候便跟随少林弟子习武。长大后&#xff0c;随着自己获得的感悟越来越多&#xff0c;最终选择开宗立派&#xff0c;独创一门武功行…

深度学习论文: Separable Self-attention for Mobile Vision Transformers

深度学习论文: Separable Self-attention for Mobile Vision Transformers Separable Self-attention for Mobile Vision Transformers PDF:https://arxiv.org/pdf/2206.02680 PyTorch: https://github.com/shanglianlm0525/PyTorch-Networks 1 概述 MobileViT是一种融合了CN…

Linux基础 - 使用 vsftpd 服务传输文件

零. 简介 文件传输协议&#xff08;File Transfer Protocol&#xff0c;FTP&#xff09;是用于在网络上进行文件传输的标准网络协议。 FTP 允许客户端和服务器之间进行文件的上传、下载、删除、重命名等操作。它基于客户端 - 服务器模型工作&#xff0c;通常使用 TCP 协议进行…

Web渗透:文件包含漏洞

Ⅱ.远程文件包含 远程文件包含漏洞&#xff08;Remote File Inclusion, RFI&#xff09;是一种Web应用程序漏洞&#xff0c;允许攻击者通过URL从远程服务器包含并执行文件&#xff1b;RFI漏洞通常出现在动态包含文件的功能中&#xff0c;且用户输入未经适当验证和过滤。接着我…

信息系统项目管理师(项目立项管理)

项目建议书的主要内容包括项目的必要性、项目建设所必须的条件、项目的市场预测、产品方案或服务的市场预测项目评估的依据主要包括&#xff1a;项目建议书及其批准文件、项目可行性研究报告、报送组织的申请报告及主管部门的初审意见、项目关键建设条件和工程等的协议文件、必…

编译VTK静态库

编译VTK静态库遇到问题 vtkCommonCore-9.3d.lib(vtkSMPToolsAPI.obj) : error LNK2019: unresolved external symbol "public: bool __cdecl vtk::detail::smp::vtkSMPToolsImpl<1>::IsParallelScope(void)" (?IsParallelScope?$vtkSMPToolsImpl$00smpdetai…

未来已来,如何打造智慧养殖场?

近年来&#xff0c;国家出台了一系列扶持政策&#xff0c;以促进养殖行业高质量发展&#xff0c;推动行业转型升级。在国家政策和市场需求的双重驱动下&#xff0c;养殖行业正迎来前所未有的发展机遇。智慧养殖以其高效、智能和可持续的特点&#xff0c;正逐步取代传统养殖方式…

公司内部培训资料!制氢变换器技术汇总 最新制氢技术方案

网盘 https://pan.baidu.com/s/1UE_d_dGcxxltII2lMg3I4w?pwdyyt3 制氢的电源系统、制氢的装置及制氢的方法.pdf 功率变换器及控制方法.pdf 单级隔离双向AC-DC变换器拓扑结构及其控制方法.pdf 基于耦合电感的高增益变换器.pdf 多端口输入非隔离型直流变换器及其控制方法.pdf 大…

Stream Lua Nginx Module 插件一键安装

文章目录 一、场景说明二、脚本职责三、参数说明四、操作示例五、注意事项 一、场景说明 本自动化脚本旨在为提高研发、测试、运维快速部署应用环境而编写。 脚本遵循拿来即用的原则快速完成 CentOS 系统各应用环境部署工作。 统一研发、测试、生产环境的部署模式、部署结构、…

程序的调试技术,设置断点

断点&#xff08;break point&#xff09;是指在代码中指定位置&#xff0c;当程序运行到此位置时变中断下来&#xff0c;并让开发者可查看此时各变量的值。因断点中断的程序并没有结束&#xff0c;可以选择继续执行。 在程序的调试过程中&#xff0c;设置断点是一个很有用的分…

ElasticSearch中的BM25算法实现原理及应用分析

文章目录 一、引言二、BM25算法实现原理BM25算法的实现原理1. 词频&#xff08;TF&#xff09;&#xff1a;2. 逆文档频率&#xff08;IDF&#xff09;&#xff1a;3. 长度归一化&#xff1a;4. BM25评分公式&#xff1a; BM25算法示例 三、BM25算法在ElasticSearch中的应用分析…