• QT·移植Qt到ARM平台及搭建Qt交叉编译环境


    目录

    一、编译tslib库

    二、移植 tslib 到文件系统

     三、编译Qt源码(用于移植到ARM)

    四、移植Qt到文件系统

     五、搭建 Qt Creator 交叉编译环境

     六、获得Qt可执行文件的另一种方法


    要想在ARM平台上运行Qt程序,得满足以下两个点:
    1、ARM平台上搭建Qt运行环境
    2、获得通过交叉编译后的Qt可执行文件

    一、编译tslib库

    从网上下载 tslib 源码压缩包,发送到 Ubuntu 中并解压,进入tslib源码目录,内容如下所示:

     执行命令安装以下软件:

    • sudo apt-get update
    • sudo apt-get install autoconf automake libtool

    执行 autogen.sh 生成 Makefile:

    • ./autogen.sh

    配置使用的交叉编译器及 tslib 编译输出路径:

    • ./configure --host=arm-linux-gnueabihf ac_cv_func_malloc_0_nonnull=yes --cache-file=arm-linux.
    • cache -prefix=/home/xzj/tslib-1.21/arm-tslib

    直接执行 make 编译及 make install 安装:

    • make
    • make install

    安装完成后在当前目录下生成一个 arm-tslib 目录。也是我们上面指令的编译输出目录路径。可以查看生成目录下有以下内容:


    二、移植 tslib 到文件系统

    我把生成的 arm-tslib 放到了挂载的buildroot文件系统的跟目录,并改名为了 tslib。(可放在其它目录了,比如usr/lib,可不改名字,根据自己喜好,但接下来的环境变量要填对)

      配置 tslib 的环境变量
    打开文件系统根目录下的/etc/profile文件,填入以下内容:

    简单说明: 
                    TSLIB_TSDEVICE        //触摸屏设备文件名,这个需要选对
                    TSLIB_CALIBFILE        //校准的数据文件,由ts_calibrate校准程序生成。 
                    SLIB_CONFFILE        //配置文件名。 
                    TSLIB_PLUGINDIR         //插件目录 
                    TSLIB_CONSOLEDEVICE        //控制台设备文件名 
                    TSLIB_FBDEVICE        //设备名
     
    以上环境变量在实际开发中的实际配置可以根据实际情况决定。而这些指定的设备节点一定要和你的开发板上的/dev目录下的设备节点相对应。

    可以使用 ts_calibrate 进行校验   ts_test      进行测试 

     三、编译Qt源码(用于移植到ARM)

    从网上下载Qt源码 https://download.qt.io/,我下载的是5.12.9的版本。

     

     放到 ubuntu 并解压得到 qt-everywhere-src-5.12.9源码目录

     修改 qmake.conf,配置相关的编译器,默认使用arm-linux-gnueabi前缀。

    • gedit ./qtbase/mkspecs/linux-arm-gnueabi-g++/qmake.conf

     配置编译选项,输入./configure -help 指令,查看可配置选项,由于配置选项太长,我另写了一个脚本来执行配置选项,名为autoconfig.sh,配置主要指定编译输出路径和功能选择:

    1. #!/bin/bash
    2. ./configure -prefix /home/xzj/tool/qt-everywhere-src-5.12.9/armqt-5.12.9 \
    3. -opensource \
    4. -confirm-license \
    5. -release \
    6. -strip \
    7. -shared \
    8. -xplatform linux-arm-gnueabi-g++ \
    9. -optimized-qmake \
    10. -c++std c++11 \
    11. --rpath=no \
    12. -pch \
    13. -skip qt3d \
    14. -skip qtactiveqt \
    15. -skip qtandroidextras \
    16. -skip qtcanvas3d \
    17. -skip qtconnectivity \
    18. -skip qtdatavis3d \
    19. -skip qtdoc \
    20. -skip qtgamepad \
    21. -skip qtlocation \
    22. -skip qtmacextras \
    23. -skip qtnetworkauth \
    24. -skip qtpurchasing \
    25. -skip qtremoteobjects \
    26. -skip qtscript \
    27. -skip qtscxml \
    28. -skip qtsensors \
    29. -skip qtspeech \
    30. -skip qtsvg \
    31. -skip qttools \
    32. -skip qttranslations \
    33. -skip qtwayland \
    34. -skip qtwebengine \
    35. -skip qtwebview \
    36. -skip qtwinextras \
    37. -skip qtx11extras \
    38. -skip qtxmlpatterns \
    39. -make libs \
    40. -make examples \
    41. -nomake tools -nomake tests \
    42. -gui \
    43. -widgets \
    44. -dbus-runtime \
    45. --glib=no \
    46. --iconv=no \
    47. --pcre=qt \
    48. --zlib=qt \
    49. -no-openssl \
    50. --freetype=qt \
    51. --harfbuzz=qt \
    52. -no-opengl \
    53. -linuxfb \
    54. --xcb=no \
    55. -tslib \
    56. --libpng=qt \
    57. --libjpeg=qt \
    58. --sqlite=qt \
    59. -plugin-sql-sqlite \
    60. -I/home/xzj/tool/tslib-1.21/arm-tslib/include \
    61. -L/home/xzj/tool/tslib-1.21/arm-tslib/lib \
    62. -recheck-all

    给执行权限,执行脚本进行配置

    • chmod +x ./autoconfig.sh
    • sudo apt-get install g++ // 配置前请先安装 g++
    • ./autoconfig.sh

    配置完成够开始进行编译和安装,由于编译用时比较久,最好使用多指令同时运行:

    • make -j12
    • make install

    执行安装指令后,会在当前目录生成一个 armqt-5.12.9 文件,配置时命名的输出文件:


    四、移植Qt到文件系统

    把刚才生成的 armqt-5.12.9 放到挂载的 buildroot 文件系统的/opt目录中:

     要想Qt 程序显示中文,需把中文字库放到新建一个/usr/share/fonts/目录下。配置 Qt5 的环境变量,打开文件系统/etc/profile,添加如下内容:


    注意文件名和路径

    以上就是搭建ARM平台(开发板)的Qt运行环境,接下来需要在ubuntu搭建Qt交叉编译环境。

     五、搭建 Qt Creator 交叉编译环境

    从网上下载安装包安装 Qt Creator, qt-opensource-linux-x64-5.12.9.run

     下载完成后,给权限并执行安装:

    • chmod u+x qt-opensource-linux-x64-5.12.9.run
    • sudo ./qt-opensource-linux-x64-5.12.9.run

    接下来就会弹出安装窗口,就跟在win安装应用一样了,省略。

    安装完成后, 配置Qt Creator Kits。打开Qt,点击工具->选项


    配置 qmake,qmake在上面编译Qt源码后生成的armqt-5.12.9里面

    配置 C++编译器,这里我使用以前安装的交叉编译器,我的在ubuntu的/usr/local/arm/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabi/bin/arm-linux-gnueabi-g++

     配置 Kits,选择刚才的Qt versions和C++编译器。

     Qt环境搭建好了,可以新建一个项目试试,在新建项目时的Kits选项记得把刚才添加Kits也勾选上。

      构建ARM平台上的Qt执行程序,就选上刚才新添加的Kit,然后点击构建,就会生成一个 build-test-ARM_Qt_5_12_9-Debug 的文件,里面就存放着Qt可执行程序,把这个可执行程序发送到ARM平台(开发板),然后直接运行就可以了。

     如果想在ubuntu上运行,就选择默认的kit,然后直接点击绿色的三角形运行就可以了,同时会生成一个build-test-Desktop_Qt_5_12_9_GCC_64bit-Debug 文件,里面的可执行文件就是在ubuntu中运行的。

     

     六、获得Qt可执行文件的另一种方法

    除了上面说的在Qt Creator 中构建出可以在ARM平台上运行的Qt程序之外,还有另一种方法也可以得到可以在ARM平台上运行的Qt程序。

    进入项目的文件夹,直接运行qmake,生成 Makefile,再执行 make 开始编译。

    • cd test
    • /home/xzj/tool/qt-everywhere-src-5.12.9/armqt-5.12.9/bin/qmake
    • make


  • 相关阅读:
    章节四:RASA 训练数据介绍
    1、skywalking-介绍
    用 Python 算法识别股价支撑位和阻力位
    C++学习笔记--项目知识点集合
    【8】Docker中部署Redis
    JVM(3)
    分享一个学英语的网站
    CAD快捷键——修改类
    从零开始—【Mac系统】MacOS配置Java环境变量
    (一)LTspice简介
  • 原文地址:https://blog.csdn.net/m0_64560763/article/details/127682013