【导语】目前天嵌IMX6Q、IMX6UL等平台默认提供的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$ 将编译安装得到的lib、plugins拷贝到开发板中,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移植完成。 |