• 【一、定制搭建-Arm平台的QT交叉编译环境】


    前言

    为实现目标嵌入式平台能够正常运行Qt程序,则需要在目标平台上部署QT运行环境。

    准备

    1. Ubuntu系统,本文使用的是20.04版本
    2. arm平台通用交叉编译工具链
    3. QT源码

    一、下载arm平台交叉编译工具链

    1.下载工具链

    点击链接https://releases.linaro.org/components/toolchain/binaries/latest-7/arm-linux-gnueabi/,选择下图中标识的文件进行下载。在这里插入图片描述

    2.解压到交叉编译平台(Ubuntu)

    通过共享文件夹或者FileZila将该压缩文件传输到Ubuntu,并解压。

    3.配置环境变量

    (1)编辑.bashrc文件
    sudo vi ~/.bashrc
    (2)添加路径
    export PATH=/home/anmo/QtPorting/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin:$PATH
    在这里插入图片描述

    二、下载QT源码(版本与交叉编译工具链版本保持一致)

    点击链接https://download.qt.io/archive/qt/5.12/5.12.9/single/,跳转到QT官网下载中心进行下载,本文以5.12.9版本的QT源码为例(如需要其他版本,点击”Parent Directory“返回上级目录自行选择)。
    点击下载图中红色框框标识的压缩文件(注意可能由于平台差异,zip类型不适用于Ubuntu系统,所以请勿下载zip类型)。下载完毕之后可通过共享文件夹,或者FileZila将压缩包传输到Ubuntu。
    在这里插入图片描述

    三、下载并编译tslib

    该库为ArmQt的屏幕触摸库

    1. 获取 tslib

    获取tslib 的源码, git 地址为 https://github.com/kergoth/tslib 。 tslib 源码已经放到开发板光
    盘中 路径为: 开发板光盘 A 基础资料 1 、例程源码 7 、第三方库源码 tslib 1.21.tar.bz2 。将压缩包发送到 Ubuntu 中并解压至Ubuntu 虚拟机目录下,将其解压。

    2. 编译 tslib

    编译 tslib生成Makefile ,还需要安装以下软件 。

    sudo apt get update
    sudo apt get install autoconf automake libtool
    

    执行autogen.sh 生成 Makefile ,以编译源码。

    3. 生成 Makefile

    执行下面的指令,指令会检查编译器等是否会工作。 ,如下图。

    ./configure --host= arm-linux-gnueabihf ac_cv_func_malloc_0_nonnull=yes --cache-file=arm -linux.cache -prefix=/home/用户名/tslib-master/arm-tslib
    

    ps:指定tslib编译输出路径-prefix=/home/用户名/tslib-master/arm-tslib

    四、配置QT源码编译工具链与编译QT源码

    1. 修改qmak.conf

    在Ubuntu解压之后,进入qtbase/mkspecd/linux-arm-gnueabi-g++路径,并编辑qmake.conf
    在这里插入图片描述
    更改编译工具链名称
    在这里插入图片描述

    2.生成qmake编译文件

    (1)在qt源码主目录下,新建配置脚本autoconfigure.sh,添加如下内容。

    ./configure -prefix /home/用户名/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/用户名/tslib-1.21/arm-tslib/include \
    -L/home/用户名/tslib-1.21/arm-tslib/lib \
    -recheck-all
    
    

    (2)添加权限

    sudo chmod 755 ./autoconfigure.sh
    

    (3)执行./a等待创建qmake
    在这里插入图片描述

    (4)输入o,表示开源版本
    在这里插入图片描述

    (5)输入y,接受许可
    在这里插入图片描述

    (6)配置完成
    在这里插入图片描述

    五、编译QT源码

    (1)执行make -j 12,进行编译
    注意请关闭当前终端窗口,重新打开一个终端窗口,为了避免在当前使用了sudo或者root用户,而在编译时出现权限访问的问题,导致编译错误
    (2)最后执行make install,会在qt源码主目录下生成编译后的文件夹,该文件夹名称为autoconfigure.sh指定的文件夹名称一致。

  • 相关阅读:
    C语言输出以下图案
    【环境装配】Anaconda在启动时闪现黑框,闪几次后仍能正常使用,解决黑框问题
    固定资产管理系统的作用有哪些
    MySQL Hints:控制查询优化器的选择
    4.2.2-测试应用程序平台配置
    NFT 交易市场社区所有化势不可挡
    Android和Flutter混合开发
    LabVIEW报错“仪器IO助手未正确安装”
    【算法基础】时间复杂度和空间复杂度
    iNFTnews|风口之上,耐克推出的web3平台.SWOOSH能否引领市场?
  • 原文地址:https://blog.csdn.net/anmo_moan/article/details/126960630