电子工程师技术服务社区
公告
登录
|
注册
首页
技术问答
厂商活动
正点原子
板卡试用
资源库
下载
文章
社区首页
文章
嵌入式Linux-Qt环境搭建
分 享
扫描二维码分享
嵌入式Linux-Qt环境搭建
嵌入式
Qt
码农爱学习
关注
发布时间: 2022-02-08
丨
阅读: 826
本编介绍如何在嵌入式Linux开发板上配置Qt运行环境,并进行Qt程序运行测试。 [TOC] # 1 tslib编译 tslib之前在测试触摸屏的时候使用过,这里再来记录一下编译过程。 下载tslib库的源码:
将下载的源码拷贝到ubuntu虚拟机中,然后解压: ```sh tar xvf tslib-1.21.tar.bz2 ``` 编译 tslib 的时候需要先在 ubuntu 中安装一些文件: ``` sudo apt-get install autoconf sudo apt-get install automake sudo apt-get install libtool ``` 在 ubunt中创建一个名为“tslib”的目录存放编译结果,然后执行以下指令进行编译: ```sh ./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/tslib make make install ``` 编译完成后,make install会将编译成果复制到指定的tslib目录中: ![](https://cf03.ickimg.com/bbsimages/202202/5dba662e6954a5ee6928d8da84ad7c14.png) 将tslib文件夹先整个打包为**arm-tslib.tar.bz2**文件,后面移植到开发板时用: ``` tar -jcf arm-tslib.tar.bz2 tslib ``` # 2 Qt源码编译 ## 2.1 下载Qt5的源码 下载地址:
![](https://cf03.ickimg.com/bbsimages/202202/15d21b9b49cb76a7852ef94e33ecaac0.png) 将下载的**qt-everywhere-src-5.15.2.tar.xz**拷贝到Ubuntu中,然后解压: ```sh tar -xvf qt-everywhere-src-5.15.2.tar.xz ``` ![](https://cf03.ickimg.com/bbsimages/202202/c283a2aa62be91ede805e9aabcc1a7a9.png) ## 2.2 修改qmake.conf 修改**qtbase/mkspecs/linux-arm-gnueabi-g++/@@**中的qmake.conf文件 这个文件默认的内容是: ```sh # # 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) # modifications to g++.conf QMAKE_CC = arm-linux-gnueabi-gcc QMAKE_CXX = arm-linux-gnueabi-g++ QMAKE_LINK = arm-linux-gnueabi-g++ QMAKE_LINK_SHLIB = arm-linux-gnueabi-g++ # modifications to linux.conf QMAKE_AR = arm-linux-gnueabi-ar cqs QMAKE_OBJCOPY = arm-linux-gnueabi-objcopy QMAKE_NM = arm-linux-gnueabi-nm -P QMAKE_STRIP = arm-linux-gnueabi-strip load(qt_config) ``` 修改成如下: ![](https://cf03.ickimg.com/bbsimages/202202/6e5f0417d896626fc4ea1f407474adb1.png) ## 2.3 配置编译选项 查看编译选项,输入./configure -help 指令,查看可配置选项 ```sh ./configure -help ``` ![](https://cf03.ickimg.com/bbsimages/202202/55756ed62a10a0f7c88e96a52911925d.png) 可以看到配置项有很多,因此可以使用一个配置脚本来进行配置。 编写一个autoconfigure.sh文件,然后根据自己的情况,写入如下配置: ```sh ./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 ``` 注意其中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相关库文件路径。 其它一些参数的含义: - -opensource:构建Qt的开源版本 - -release:使用release版本的Qt - -xplatform linux-arm-gnueabi-g++:指定编译器 - -skip qt3d:跳过Qt的3d - -make libs:编译要用到的库 - -make examples:编译生成Qt的例程代码 - -nomake tools:不生成Qt的工具 - -no-openssl:不使用openssl ## 2.4 编译 配置前需要先安装 g++ ```sh sudo apt-get install g++ ``` 赋予脚本可执行权限,然后执行 autoconfigure.sh ```sh chmod +x autoconfigure.sh ./autoconfigure.sh ``` ![](https://cf03.ickimg.com/bbsimages/202202/ed54f254c3d5b5623fb644ed895cd064.png) 运行完成之后: ![](https://cf03.ickimg.com/bbsimages/202202/f6429c5bb7251aac1f5dd48f4f989f48.png) 然后就可以执行make指令进行编译了。 编译大约需要十几到几十分钟。 ![](https://cf03.ickimg.com/bbsimages/202202/86819f3d7735d45458cee3b48a8af3f3.png) 编译完成之后,再执行make install进行安装,安装之后就可以看到arm-qt文件中的内容了: ![](https://cf03.ickimg.com/bbsimages/202202/9781c5985999fa3026bcfa3a335b8b94.png) 将qrm-qt文件夹先整个打包为**arm-qt.tar.bz2**文件,后面移植到开发板时用: ``` tar -jcf arm-qt.tar.bz2 arm-qt ``` ## 2.5 编译出错的问题 make编译时可能会遇到编译出错 - **情况1:**我遇到过下面这种: ![](https://cf03.ickimg.com/bbsimages/202202/4728192341fa47024c72e621f09adcd4.png) 这种情况是因为我的ubuntu虚拟机空间不够用了,解决方法就是给虚拟器扩容,具体操作过程见: - **情况2:**编译最新版本的QT源码报错 ![](https://cf03.ickimg.com/bbsimages/202202/a78ee55c0453c04f1ee0aad1bc82b75a.png) 使用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的操作步骤: ```c cp arm-qt.tar.bz2 ~/myTest/nfs/rootfs/usr/lib cd ~/myTest/nfs/rootfs/usr/lib/ tar xf arm-qt.tar.bz2 rm arm-qt.tar.bz2 ``` arm-tslib复制与解压过程类似。 ## 3.2 设置开发板的环境变量 编辑/etc/profile,写入如下内容: ```sh 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.so export 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 ``` 然后使该配置立即生效: ```sh source /etc/profile ``` # 4 Qt运行测试 Qt的编译文件中,自带的Qt的一些例子,可以先来在板子上运行这些例子看看Qt程序能否在板子上正常运行。 这是运行其中的一个程序: ```sh /usr/lib/arm-qt/examples/widgets/animation/animatedtiles/animatedtiles ``` ![](https://cf03.ickimg.com/bbsimages/202202/d28b258e1e3b0adcdf7e3fcee755e31b.jpg)
原创作品,未经权利人授权禁止转载。详情见
转载须知
。
举报文章
点赞
(
0
)
码农爱学习
关注
评论
(0)
登录后可评论,请
登录
或
注册
相关文章推荐
MK-米客方德推出工业级存储卡
Beetle ESP32 C3 蓝牙数据收发
Beetle ESP32 C3 wifi联网获取实时天气信息
开箱测评Beetle ESP32-C3 (RISC-V芯片)模块
正点原子数控电源DP100测评
DP100试用评测-----开箱+初体验
Beetle ESP32 C3环境搭建
【花雕体验】16 使用Beetle ESP32 C3控制8X32位WS2812硬屏之二
X
你的打赏是对原创作者最大的认可
请选择打赏IC币的数量,一经提交无法退回 !
100IC币
500IC币
1000IC币
自定义
IC币
确定
X
提交成功 ! 谢谢您的支持
返回
我要举报该内容理由
×
广告及垃圾信息
抄袭或未经授权
其它举报理由
请输入您举报的理由(50字以内)
取消
提交