0

0

嵌入式Linux-Qt环境搭建

星夢妙者

星夢妙者

发布时间:2025-07-14 09:42:49

|

476人浏览过

|

来源于php中文网

原创

嵌入式linux-qt环境搭建

本编介绍如何在嵌入式linux开发板上配置qt运行环境,并进行qt程序运行测试。

嵌入式Linux-Qt环境搭建
1 tslib编译

tslib之前在测试触摸屏的时候使用过,这里再来记录一下编译过程。

下载tslib库的源码:https://github.com/libts/tslib/tags

将下载的源码拷贝到ubuntu虚拟机中,然后解压:

代码语言:javascript代码运行次数:0运行复制
<code class="javascript">tar xvf tslib-1.21.tar.bz2</code>

编译 tslib 的时候需要先在 ubuntu 中安装一些文件:

代码语言:javascript代码运行次数:0运行复制
<code class="javascript">sudo apt-get install autoconf sudo apt-get install automake sudo apt-get install libtool</code>

在 ubunt中创建一个名为“tslib”的目录存放编译结果,然后执行以下指令进行编译:

代码语言:javascript代码运行次数:0运行复制
<code class="javascript">./configure --host=arm-linux-gnueabihf ac_cv_func_malloc_0_nonnull=yes --cache-file=arm-linux.cache -prefix=/home/xxpcb/myTest/imx6ull/otherlib/tslib-2/tslibmakemake install</code>

编译完成后,make install会将编译成果复制到指定的tslib目录中:

嵌入式Linux-Qt环境搭建

将tslib文件夹先整个打包为arm-tslib.tar.bz2文件,后面移植到开发板时用:

代码语言:javascript代码运行次数:0运行复制
<code class="javascript">tar -jcf arm-tslib.tar.bz2 tslib</code>
2 Qt源码编译2.1 下载Qt5的源码

下载地址:https://download.qt.io/archive/qt/5.15/5.15.2/single/

嵌入式Linux-Qt环境搭建

将下载的qt-everywhere-src-5.15.2.tar.xz拷贝到Ubuntu中,然后解压:

代码语言:javascript代码运行次数:0运行复制
<code class="javascript">tar -xvf qt-everywhere-src-5.15.2.tar.xz</code>
嵌入式Linux-Qt环境搭建
2.2 修改qmake.conf

修改qtbase/mkspecs/linux-arm-gnueabi-g++/中的qmake.conf文件

这个文件默认的内容是:

代码语言:javascript代码运行次数:0运行复制
<code class="javascript">## qmake configuration for building with arm-linux-gnueabi-g++#MAKEFILE_GENERATOR      = UNIXCONFIG                 += incrementalQMAKE_INCREMENTAL_STYLE = sublibinclude(../common/linux.conf)include(../common/gcc-base-unix.conf)include(../common/g++-unix.conf)# modifications to g++.confQMAKE_CC                = arm-linux-gnueabi-gccQMAKE_CXX               = arm-linux-gnueabi-g++QMAKE_LINK              = arm-linux-gnueabi-g++QMAKE_LINK_SHLIB        = arm-linux-gnueabi-g++# modifications to linux.confQMAKE_AR                = arm-linux-gnueabi-ar cqsQMAKE_OBJCOPY           = arm-linux-gnueabi-objcopyQMAKE_NM                = arm-linux-gnueabi-nm -PQMAKE_STRIP             = arm-linux-gnueabi-stripload(qt_config)</code>

修改成如下:

嵌入式Linux-Qt环境搭建
2.3 配置编译选项

查看编译选项,输入./configure -help 指令,查看可配置选项

代码语言:javascript代码运行次数:0运行复制
<code class="javascript">./configure -help</code>
嵌入式Linux-Qt环境搭建

可以看到配置项有很多,因此可以使用一个配置脚本来进行配置。

编写一个autoconfigure.sh文件,然后根据自己的情况,写入如下配置:

代码语言:javascript代码运行次数:0运行复制
<code class="javascript">./configure -prefix /home/xxpcb/myTest/imx6ull/otherlib/qt/qt-everywhere-src-5.12.9/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/xxpcb/myTest/imx6ull/otherlib/tslib-2/tslib/include \-L/home/xxpcb/myTest/imx6ull/otherlib/tslib-2/tslib/lib \-recheck-all</code>

注意其中3处是自己的配置路:

1 /home/xxpcb/myTest/imx6ull/otherlib/qt/qt-everywhere-src-5.12.9/arm-qt 为编译输出路径。

2 /home/xxpcb/myTest/imx6ull/otherlib/tslib-2/tslib/include 为tslib 头文件路径。

3 /home/xxpcb/myTest/imx6ull/otherlib/tslib-2/tslib/lib 为tslib相关库文件路径。

魔众盲盒系统
魔众盲盒系统

魔众盲盒系统,快速搭建在线盲盒系统。 “盲盒”已经深入到了各个行业,电商、化妆品、旅游、餐饮、 NFT等各个领域,都有自己独特的发展模式,但它们的玩法千差万别,让我们来看一看这套系统的构造。 运行环境: 操作系统Linux/Unix 或 Windows 软件环境Laravel 5.1的运行环境 Apache/Nginx PHP 5.5.9+ / PHP

下载

其它一些参数的含义:

-opensource:构建Qt的开源版本-release:使用release版本的Qt-xplatform linux-arm-gnueabi-g++:指定编译器-skip qt3d:跳过Qt的3d-make libs:编译要用到的库-make examples:编译生成Qt的例程代码-nomake tools:不生成Qt的工具-no-openssl:不使用openssl2.4 编译

配置前需要先安装 g++

代码语言:javascript代码运行次数:0运行复制
<code class="javascript">sudo apt-get install g++</code>

赋予脚本可执行权限,然后执行 autoconfigure.sh

代码语言:javascript代码运行次数:0运行复制
<code class="javascript">chmod +x autoconfigure.sh./autoconfigure.sh</code>
嵌入式Linux-Qt环境搭建

运行完成之后:

嵌入式Linux-Qt环境搭建

然后就可以执行make指令进行编译了。

编译大约需要十几到几十分钟。

嵌入式Linux-Qt环境搭建

编译完成之后,再执行make install进行安装,安装之后就可以看到arm-qt文件中的内容了:

嵌入式Linux-Qt环境搭建

将qrm-qt文件夹先整个打包为arm-qt.tar.bz2文件,后面移植到开发板时用:

代码语言:javascript代码运行次数:0运行复制
<code class="javascript">tar -jcf arm-qt.tar.bz2 arm-qt</code>
2.5 编译出错的问题

make编译时可能会遇到编译出错

情况1:我遇到过下面这种:
嵌入式Linux-Qt环境搭建

这种情况是因为我的ubuntu虚拟机空间不够用了,解决方法就是给虚拟器扩容,具体操作过程见:VirtualBox虚拟机Ubuntu扩容记

情况2:编译最新版本的QT源码报错
嵌入式Linux-Qt环境搭建

使用Qt最新版本5.15.2编译报错,暂未找到解决方法,所以我先用5.12.9版本的Qt。

3 开发板上配置Qt环境3.1 复制tslib和Qt的编译文件

将之前打包的arm-tslib.tar.bz2和arm-qt.tar.bz2压缩包复制到板子中,可以先复制到nfs网络位置,然后解压到/usr/lib 目录下,解压后开删除无用的压缩包。

这是对arm-qt的操作步骤:

代码语言:javascript代码运行次数:0运行复制
<code class="javascript">cp arm-qt.tar.bz2 ~/myTest/nfs/rootfs/usr/libcd ~/myTest/nfs/rootfs/usr/lib/tar xf arm-qt.tar.bz2rm arm-qt.tar.bz2</code>

arm-tslib复制与解压过程类似。

3.2 设置开发板的环境变量

编辑/etc/profile,写入如下内容:

代码语言:javascript代码运行次数:0运行复制
<code class="javascript">export TSLIB_ROOT=/usr/lib/arm-tslib export TSLIB_CONSOLEDEVICE=none export TSLIB_FBDEVICE=/dev/fb0 export TSLIB_TSDEVICE=/dev/input/event1 export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts export TSLIB_CALIBFILE=/etc/pointercal export  LD_PRELOAD=$TSLIB_ROOT/lib/libts.soexport QT_ROOT=/usr/lib/arm-qt export QT_QPA_GENERIC_PLUGINS=tslib:/dev/input/event1 export QT_QPA_FONTDIR=/usr/share/fonts export QT_QPA_PLATFORM_PLUGIN_PATH=$QT_ROOT/plugins export QT_QPA_PLATFORM=linuxfb:tty=/dev/fb0 export QT_PLUGIN_PATH=$QT_ROOT/plugins export LD_LIBRARY_PATH=$QT_ROOT/lib:$QT_ROOT/plugins/platforms export QML2_IMPORT_PATH=$QT_ROOT/qml export QT_QPA_FB_TSLIB=1</code>

然后使该配置立即生效:

代码语言:javascript代码运行次数:0运行复制
<code class="javascript">source /etc/profile</code>
4 Qt运行测试

Qt的编译文件中,自带的Qt的一些例子,可以先来在板子上运行这些例子看看Qt程序能否在板子上正常运行。

这是运行其中的一个程序:

代码语言:javascript代码运行次数:0运行复制
<code class="javascript">/usr/lib/arm-qt/examples/widgets/animation/animatedtiles/animatedtiles</code>

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
视频后缀名都有哪些
视频后缀名都有哪些

视频后缀名都有avi、mpg、mpeg、rm、rmvb、flv、wmv、mov、mkv、ASF、M1V、M2V、MPE、QT、VOB、RA、RMJ、RMS、RAM、等等。更多关于视频后缀名的相关知识,详情请看本专题下面的文章,php中文网欢迎大家前来学习。

3875

2023.10.31

C++ Qt图形开发
C++ Qt图形开发

本专题专注于 C++ Qt框架在图形界面开发中的应用,系统讲解窗口设计、信号与槽机制、界面布局、事件处理、数据库连接与跨平台打包等核心技能,通过多个桌面应用项目实战,帮助学员快速掌握 Qt 框架并独立完成跨平台GUI软件的开发。

76

2025.08.15

C++ 图形界面开发基础(Qt方向)
C++ 图形界面开发基础(Qt方向)

本专题系统讲解 使用 C++ 与 Qt 进行图形界面(GUI)开发的核心技能,内容涵盖 Qt 项目结构、窗口组件、信号与槽机制、事件处理、布局管理、资源管理,以及跨平台编译与打包流程。通过多个小型桌面应用实战案例,帮助学习者掌握从界面设计到功能实现的完整 GUI 开发能力。

111

2025.12.05

github中文官网入口 github中文版官网网页进入
github中文官网入口 github中文版官网网页进入

github中文官网入口https://docs.github.com/zh/get-started,GitHub 是一种基于云的平台,可在其中存储、共享并与他人一起编写代码。 通过将代码存储在GitHub 上的“存储库”中,你可以: “展示或共享”你的工作。 持续“跟踪和管理”对代码的更改。

4131

2026.01.21

http与https有哪些区别
http与https有哪些区别

http与https的区别:1、协议安全性;2、连接方式;3、证书管理;4、连接状态;5、端口号;6、资源消耗;7、兼容性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2907

2024.08.16

磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

1564

2023.06.21

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

716

2023.06.29

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

300

2023.06.30

C# ASP.NET Core微服务架构与API网关实践
C# ASP.NET Core微服务架构与API网关实践

本专题围绕 C# 在现代后端架构中的微服务实践展开,系统讲解基于 ASP.NET Core 构建可扩展服务体系的核心方法。内容涵盖服务拆分策略、RESTful API 设计、服务间通信、API 网关统一入口管理以及服务治理机制。通过真实项目案例,帮助开发者掌握构建高可用微服务系统的关键技术,提高系统的可扩展性与维护效率。

3

2026.03.11

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

相关下载

更多

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 10.5万人学习

Git 教程
Git 教程

共21课时 | 4.2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号