qt移植到imx6ull运行(qt部署到imx6ull)

news2025/4/20 20:18:55

这个事情对于小白来说确实不是很友好,会经常出现错误,我弄了两天终于弄好了

我主要参考了https://blog.csdn.net/m0_61738650/article/details/131269561

                     https://blog.csdn.net/m0_61738650/article/details/131171914这两个教程

我现在来简述一下流程以及我在后续遇到的一些问题:

 1.完成tslib源码编译

首先下载tslib库源码Tags · libts/tslib · GitHub,将源码传入Ubuntu

或者你可以直接在Ubuntu下载,然后解压:

tar xvf 压缩包

安装需要的配件

sudo apt-get install autoconf 
sudo apt-get install automake 
sudo apt-get install libtool 
./configure --host=arm-linux-gnueabihf(工具链) ac_cv_func_malloc_0_nonnull=yes --cache-file=arm-linux.cache -prefix=放置tslib的地方(我的是/home/book/qtstudy/tslib-arm)
make
make install

使用configure进行配置,然后make,makeinstall,这里host指定工具链,然后在你指定的路径会生成bin etc include lib share五个文件夹,这里就成功了

2.下载并编译qt源码

        qt安装包和qt的源码下载是非常非常慢的,这里我推荐离线安装,因为我使用镜像安装总是提示我缺少某某文件。

网站:Index of /archive/qt/5.15/5.15.2/single

这里qt-everywhere-src-5.15.2.tar.xz是我们需要下载的,我们使用迅雷下载会比较快,我们右键点击需要下载的文件,复制链接,然后打开迅雷在搜索框中粘贴连接,如果弹出下载框即代表可以下载。

再解压

tar -xvf qt-everywhere-src-5.15.2.tar.xz 

修改qt-everywhere-src-5.15.2文件下qtbase/mkspecs/linux-arm-gnueabi-g++/qmake.conf将其修改为如下内容:

其中arm-linux-gnueabihf-gcc arm-linux-gnueabihf-g++是编译工具链,使用之前先查看有没有,在终端输入arm-linux然后按tab补齐看有没有,没的话需要安装

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

MAKEFILE_GENERATOR      = UNIX
CONFIG                 += incremental
QMAKE_INCREMENTAL_STYLE = sublib

QT_QPA_DEFAULT_PLATFORM = linuxfb
QMAKE_CFLAGS += -O2 -march=armv7-a -mtune=cortex-a7 -mfpu=neon -mfloat-abi=hard
QMAKE_CXXFLAGS += -O2 -march=armv7-a -mtune=cortex-a7 -mfpu=neon -mfloat-abi=hard


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

# modifications to g++.conf
QMAKE_CC                = arm-linux-gnueabihf-gcc
QMAKE_CXX               = arm-linux-gnueabihf-g++
QMAKE_LINK              = arm-linux-gnueabihf-g++
QMAKE_LINK_SHLIB        = arm-linux-gnueabihf-g++

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

下面我们需要对configure文件进行配置,输入./configure -help可以看到我们需要配置的项,tslib需要配置的很少因此我们可以直接在后面输入配置内容,但是这个需要配置的很多,因此我们写了一个脚本文件来配置

我们在qt-everywhere-src-5.15.2文件夹下创建并写入vim autoconfigure.sh

其中第一行是输出配置文件的路径

倒数第二行和倒数第三行分别为我们刚才编译生成tslib的lib 和include文件夹

./configure -prefix /home/book/qtstudy/qt-everywhere-src-5.15.2/arm-qt \
-opensource \
-confirm-license \
-release \
-strip \
-shared \
-xplatform linux-arm-gnueabi-g++ \
-optimized-qmake \
-c++std c++11 \
--rpath=no \
-pch \
-skip qt3d \
-skip qtactiveqt \
-skip qtandroidextras \
-skip qtcanvas3d \
-skip qtconnectivity \
-skip qtdatavis3d \
-skip qtdoc \
-skip qtgamepad \
-skip qtlocation \
-skip qtmacextras \
-skip qtnetworkauth \
-skip qtpurchasing \
-skip qtremoteobjects \
-skip qtscript \
-skip qtscxml \
-skip qtsensors \
-skip qtspeech \
-skip qtsvg \
-skip qttools \
-skip qttranslations \
-skip qtwayland \
-skip qtwebengine \
-skip qtwebview \
-skip qtwinextras \
-skip qtx11extras \
-skip qtxmlpatterns \
-make libs \
-make examples \
-nomake tools -nomake tests \
-gui \
-widgets \
-dbus-runtime \
--glib=no \
--iconv=no \
--pcre=qt \
--zlib=qt \
-no-openssl \
--freetype=qt \
--harfbuzz=qt \
-no-opengl \
-linuxfb \
--xcb=no \
-tslib \
--libpng=qt \
--libjpeg=qt \
--sqlite=qt \
-plugin-sql-sqlite \
-I/home/book/qtstudy/tslib-arm/include \
-L/home/book/qtstudy/tslib-arm/lib \
-recheck-all

下面我们需要把文件设置为可执行文件,并运行

chmod +x autoconfigure.sh
./autoconfigure.sh 

这时候我们就等配置完成即可

我在配置的时候遇到的问题:

        tslib问题,大概意思就是tslib已生成但是有什么什么错误来着

        最后的解决方法就是重新按照上述流程编译tslib,之前有编译过的也重新编译一下

后面分别执行make makeinstall即可(同理出问题的话可以make distclean可以删除make文件生成东西和configure配置的东西,重新来即可,当然也可以直接把这个文件夹删掉重新解压缩)

3.安装linux中的qt

        和上述配置qt源码一样,我们只需要复制qt下载链接后去迅雷下载就会很快

        同理使用chmod将qt文件设置为可执行文件,并运行(我下载的是qt-opensource-linux-x64-5.12.8.run,下载链接在Index of /archive/qt/5.12/5.12.8),安装的时候如果断网可以跳过登录,当然如果你注册了qt账号(免费注册很简单)可以联网安装,只需要登录一下qt账户,下面安装时候我只添加选择了desktop gcc -64也就是第一个选项,这个和gcc编译器相关,其他的可以都不添加选择。

chmod +x qt下载文件
./qt下载文件

安装成功后在启动qt'软件在上面tools options中进行配置,选择kits,对debuggers进行添加,我的路径如下(如果是百问网的imx6ull应该是一样的)manual里面两个都一样只是起了不一样的名字,配置一个即可

QT versions中add,选择我们刚才配置文件configure选择的输出文件夹里面的qmake

最后我们add一个kit,将配置项选为我们刚才配置的选项

编译器直接选择自动的这个arm 32bit,但是我在上述教程中看到的编译器配置的是debuggers一样的工具链,但是这样做我会报错(某个库的形式错误),我不知道为什么,但是确实使用这个自动的编译器就可以用。

保存,下面去项目中:取消勾选默认的kit的shadow build,然后选择我们自己的kit

选择我们的kit进行运行(需要打开板子)

4.配置字体

上述如果成功的话你会发现板子上任何文字都不会显示,是因为我们没用设置字库文件,我们需要去设置环境变量告诉板子我们用的是那个字库,这时候我们制定了字体文件夹,我们只需要任意去网上下载一个ttf'文件放在这个文件夹内即可,(一定要是这个文件夹里面)

export QT_QPA_FONTDIR=/usr/share/fonts

最后我们就可以成功运行

有任何问题欢迎评论区交流!

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

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

相关文章

AI+新能源充电桩数据集

需要的同学私信联系,推荐关注上面图片右下角的订阅号平台 自取下载。 随着我国新能源汽车市场的蓬勃发展,充电桩的需求量日益增加,充电桩的智能化程度不仅影响充电站运营商的经营效益,也大大影响着用户的充电体验。AI技术可以涵盖…

深入浅出:ConcurrentLinkedQueue源码分析与实战

哈喽,各位小伙伴们,你们好呀,我是喵手。运营社区:C站/掘金/腾讯云;欢迎大家常来逛逛 今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流,互相学习,一…

C++青少年简明教程:C++中的常量、变量、表达式和语句

C青少年简明教程:C中的常量、变量、表达式和语句 在C编程中,常量、变量、表达式和语句是基本的编程概念。 常量(Constants):在程序中具有固定值的数据称为常量。常量可以是字面值,如整数、浮点数、字符或…

西门子博途WINCC动画之旋转运动

概述 本例将介绍在西门子 TIA Portal HMI 中旋转运动动画的一种实现方法。本例以风机、搅拌器和传送带为例,按下启动按钮开始转动,按下停止按钮停止转动。 第1步: 添加 PLC 设备。​博途TIA/WINCC社区VX群 ​博途TIA/WINCC社区VX群 选择西…

基于SpringBoot的酒店(预约)客房管理系统的设计与实现+毕业论文

系统介绍 酒店客房管理系统为酒店管理者和用户、清洁人员提供一个在线管理酒店客房的系统。在网站的设计中,一共分为了两个模块设计,一个是前台模块,一个是后台模块,前台主要用于提供查看客房信息,酒店资讯&#xff0…

iOS MRC那句话

混编时使用MRC文件需要使用这句话 -fno-objc-arc在下图中显示的位置添加

5月13号作业

使用消息队列实现的2个终端之间的互相聊天 并使用信号控制消息队列的读取方式: 当键盘按ctrlc的时候,切换消息读取方式,一般情况为读取指定编号的消息,按ctrlc之后,指定的编号不读取,读取其他所有编号的消息…

004.可观察对象与观察者

Rx非常适合事件驱动的应用程序。这是有意义的,因为事件(作为)(如前所述)是创建时变值的命令式方法。从历史上看,事件驱动编程主要出现在客户端技术中,因为作为事件实现的用户交互。例如,你可能工作过使用OnMouseMove或OnKeyPressed事件。正因…

commvault学习(7):恢复oracle

在实际生产环境中,oracle的恢复方式大部分是异机恢复。 环境: 备份机:windows server2008,ip:192.168.20.56 恢复目标机:windows server2008,ip:192.168.20.55 CS、MA&#xff1…

acw165. 小猫爬山-DFS剪枝与优化

题目 思路 暴搜顺序:从前往后依次枚举每只小猫,枚举当前这只小猫应该放在哪一辆车上,递归完n层之后,就可以知道所有方案中的最少车辆总数剪枝的情况: 优化搜索顺序:大部分情况下,应该优先搜索分…

Java抽象类:为何它是你代码架构的基石?

目录 1、抽象类的概念 2、抽象类语法 3、抽象类特性 4、抽象类的作用 5、 完结散花 个人主页:秋风起,再归来~ 文章专栏:javaSE的修炼之路 个人格言:悟已往之不谏,知来者犹可追 克…

FPGA OSD 方案,应用于XBOX游戏机收费等领域

FPGA方案,HDMI IN接收原始HDMI 信号,HDMI OUT输出叠加字符/图片后的HDMI信号 客户应用:XBOX游戏机收费 主要特性: 1.支持多分辨率格式显示 2.支持OSD 叠加多个图层 3.支持字体大小随意配置 4.支持字体格式随意配置 5.零延时&…

GStreamer中如何自定义配置线程优先级

1.引言 如果看了gstreamer官方教程配置多线程出现编译不过的问题了,不妨进来看看这篇文章或许能解决一些编译问题。 GStreamer 本质上是多线程的,并且是完全线程安全的。大多数线程内部对应用程序是隐藏的,这应该使应用程序开发更容易。但是&…

测试项目实战--安享理财2(Jmeter接口测试)

说明: 1.访问地址: 本项目实战使用的是传智播客的安享理财项目(找了半天这个项目能免费用且能够满足测试实战需求) 前台:http://121.43.169.97:8081/ 后台:http://121.43.169.97:8082/ (点赞收藏…

机器人开发项目实现过程

比赛项目实现过程 第一步:设置远程桌面连接 登录机器人系统,设置网络,参考远程桌面连接20230525.mp4 外接显示器、鼠标和键盘 登录系统 账户:robuster 密码:123456 建议,手机开热点,机器人…

开关电源功率测试方法:输入、输出功率测试步骤

在现代电子设备中,开关电源扮演着至关重要的角色,其效率和稳定性直接影响到整个系统的性能。因此,对开关电源进行功率测试成为了电源管理的重要环节。本文将详细介绍如何使用DC-DC电源模块测试系统对开关电源的输入输出功率进行准确测量&…

RabbitMQ(四种使用模式)

文章目录 1.Fanout(广播模式)1.基本介绍2.需求分析3.具体实现1.编写配置类 RabbitMQConfig.java2.编写生产者,发送消息到交换机 MQSender.java3.编写消费者,接受消息 MQReceiver.java4.控制层调用方法,发送信息到交换机…

大厂Java面试题:MyBatis中是如何实现动态SQL的?有哪些动态SQL元素(标签)?描述下动态SQL的实现原理。

大家好,我是王有志。 今天给大家带来的是一道来自京东的 MyBatis 面试题:MyBatis 中是如何实现动态 SQL 的?有哪些动态 SQL 元素(标签)?描述下动态 SQL 的实现原理。 MyBatis 中提供了 7 个动态 SQL 语句…

7B2 PRO主题5.4.2免授权直接安装

B2 PRO 5.4.2 最新免授权版不再需要改hosts,直接在wordpress上传安装即可

全域运营是割韭菜吗?看完再下结论!

随着流量时代的到来,各大公私域平台中的流量争夺战日益激烈,商家和品牌实现流量变现的难度值也不断提高,运营人员的压力也逐渐增大。在此背景下,全域运营的兴起或许是一个契机,能够将所有人从内卷的状态中解救出来。而…