天嵌 ARM开发社区

 找回密码
 注册
查看: 2342|回复: 1

Qt5.9.5移植到ARM开发板

[复制链接]
freewing 发表于 2021-5-31 10:28:40 | 显示全部楼层 |阅读模式
【导语】目前天嵌IMX6QIMX6UL等平台默认提供的Qt版本是5.5,由于Qt版本不断更新,当现有版本的Qt库不能满足实际开发需求时,则需要进行Qt移植。本文将介绍下如何将Qt5.9.5移植到ARM开发板上。
1.准备工作
(1)   主机环境:Ubuntu 16.04
开发板:天嵌IMX6Q_COREC(【点击此处】了解核心板参数)
(2)   官网下载Qt5.9.5源码包qt-everywhere-opensource-src-5.9.5.tar.xz
官网下载路径:https://download.qt.io/archive/qt/5.9/5.9.5/
(3)   安装IMX6Q配套交叉编译器5.3.1,因为Qt5.9.5支持C++11,所以交叉编译器版本需要高于4.8以上,gcc版本也建议在gcc 4.8以上版本,低于可能报错unrecognized command line option “-std=c++11”
2交叉编译Qt5.9.5源码
(1)   拷贝Qt源码包至Ubuntu并解压
mm@ubuntu:~/work/qt5.9$tar xvf qt-everywhere-opensource-src-5.9.5.tar.xz                  //解压
mm@ubuntu:~/work/qt5.9$ls
qt-everywhere-opensource-src-5.9.5  qt-everywhere-opensource-src-5.9.5.tar.xz
(2)   指定目标平台的架构和交叉编译器的类型
Qt5中针对不同的目标平台都有相应的配置文件夹,只需修改对应目标平台文件夹中的配置文件qmake.conf
mm@ubuntu:~/work/qt5.9$cd qt-everywhere-opensource-src-5.9.5/
mm@ubuntu:~/work/qt5.9/qt-everywhere-opensource-src-5.9.5$vi qtbase/mkspecs/linux-arm-gnueabi-g++/qmake.conf
下面是修改后的qmake.conf,其中的内容需要根据自己的实际情况去修改,这里改动了交叉编译器名字
(3)   根据需求配置Qt
配置Qt可以通过源码包中configure脚本来完成,运行configure脚本后会得到makefile文件,具体的可用配置可以执行./configure-help查看参数,根据自身需要进行配置,这里编写了一个脚本来实现配置的步骤。
mm@ubuntu:~/work/qt5.9/qt-everywhere-opensource-src-5.9.5$vi build.sh
以下是build.sh内容
#!/bin/sh
exportCROSS=arm-linux-gnueabihf-
CROSS_TOOLCHAIN_PATH=/opt/EmbedSky/gcc-linaro-5.3-2016.02-x86_64_arm-linux-gnueabihf/sysroot_qt5.9
exportPKG_CONFIG_PATH=${CROSS_TOOLCHAIN_PATH}/usr/lib/pkgconfig
./configure--prefix=${CROSS_TOOLCHAIN_PATH}/usr --bindir=${CROSS_TOOLCHAIN_PATH}/usr/bin--libexecdir=${CROSS_TOOLCHAIN_PATH}/usr/lib/dbus-glib--datadir=${CROSS_TOOLCHAIN_PATH}/usr/share--sysconfdir=${CROSS_TOOLCHAIN_PATH}/etc--libdir=${CROSS_TOOLCHAIN_PATH}/usr/lib \
-confirm-license-opensource -release -make libs -xplatform linux-arm-gnueabi-g++-optimized-qmake -pch \
-qt-libjpeg-qt-libpng -qt-zlib \
-gui \
-no-opengl \
参数-prefix指定了文件的安装路径,这里的安装路径是/opt/EmbedSky/gcc-linaro-5.3-2016.02-x86_64_arm-linux-gnueabihf/sysroot_qt5.9,参数-xplatform指定了目标平台为linux-arm-gnueabi-g++。执行这个脚本后就会得到makefile文件,
(4)   编译安装
执行make&&makeinstall,然后开始漫长的编译过程,整个过程持续大概2个小时。
3.移植库并配置开发板环境
(1)移植所需的文件到ARM
编译成功会在-prefix指定的安装路径中生成一系列文件夹
mm@ubuntu:~/work/qt5.9/qt-everywhere-opensource-src-5.9.5$ls /opt/EmbedSky/gcc-linaro-5.3-2016.02-x86_64_arm-linux-gnueabihf/sysroot_qt5.9/usr/
bin  include lib  mkspecs  plugins qml  share
mm@ubuntu:~/work/qt5.9/qt-everywhere-opensource-src-5.9.5$
将编译安装得到的libplugins拷贝到开发板中,lib中存放的是Qt程序运行所需的动态库文件,plugins中存放的是所需的插件,将相关文件、文件夹通过U盘或者网络方式拷贝到板子,这里通过网络传输,将相关文件拷贝到板子/opt/qt5.9文件夹中
root@Embedsky:/opt/qt5.9#ls usr/
bin  include lib  mkspecs  plugins qml  share
root@Embedsky:/opt/qt5.9#
(2)配置环境执行qt程序
配置环境:
exportQT_QPA_PLATFORM_PLUGIN_PATH=/opt/qt5.9/usr/plugins     //插件路径
exportLD_LIBRARY_PATH=/opt/qt5.9/usr/lib/                          //库路径
exportQT_QPA_PLATFORM=linuxfb                                             
exportQT_QPA_FONTDIR=/usr/lib/fonts                                    //该处使用板子原有字体库
这时候相关库和环境已经有了,我们使用qmake编译一个现成的qt程序拷贝到板子,编译命令:
#/opt/EmbedSky/gcc-linaro-5.3-2016.02-x86_64_arm-linux-gnueabihf/sysroot_qt5.9/usr/bin/qmakePDA.pro
#make
拷贝到板子/opt/qt5.9_demo目录下执行
root@Embedsky:/opt/qt5.9_demo#./tqpda  
libpng warning:iCCP: known incorrect sRGB profile
libpng warning:iCCP: known incorrect sRGB profile
libpng warning:iCCP: known incorrect sRGB profile
libpng warning:iCCP: known incorrect sRGB profile
QFontDatabase:Cannot find font directory /usrlib/fonts.
至此qt移植完成。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
wldllz 发表于 2022-7-14 16:12:43 | 显示全部楼层
收藏,马上要用到了,谢谢、
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号 )

GMT+8, 2024-4-25 20:34 , Processed in 1.093743 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表