• 【无标题】


    1、概述

    Qt版本: Qt5.12.10
    Qt 官网下载地址: Qt官网
    路径: Qt5.12.10源码目录目录下下载 qt-everywhere-src-5.12.10.tar.xz
    **编译平台:方德(其余架构亦可考)

    2、编译源码记录:

    1、下载源码qt-everywhere-src-5.12.10.tar.gz并解压

    tar vxf qt-everywhere-src-5.12.10.tar.gz
    
    • 1

    2、编译

     sudo ./configure -prefix /usr/local/QT/qt5.12.10 -opensource -nomake examples -nomake tests [默认编译]
    
    • 1

    或者指定后缀

    ./configure -prefix /usr/local/QT/qt5.12.10 -opensource -nomake examples -nomake tests  -qtlibinfix 51210
    
    • 1

    说明:a、指定后缀编译(其中/usr/local/QT/qt5.12.10为编译之后qmake目录 51210为后缀)
    b、/usr/local/QT/qt5.12.10为编译之后qmake目录。
    3、编译

    sudo  make
    
    • 1

    4、安装

    sudo make install
    
    • 1

    3、安装后目录

    1、查找

    find / -name qmake
    
    • 1

    2、版本

    ****/qmake --version
    
    • 1

    3、查看自己需要的版本是否存在
    不存在:则使用1中的qmake编译(例如:/******/qt5/bin/qmake(安装的qt5的目录) *****/qtcharts/qtcharts.pro(qtcharts源码pro路径))

    3、编译之后可以配置

    在这里插入图片描述
    在这里插入图片描述
    ps:这里的配置参考而来,亲测可行。

    4、可能遇到的问题

    在这里插入图片描述

    选项 “o” "y"继续…

    5、编译指定模块,以QWebEngineView为例子

    这里以wenengineview为例:
    进入wenengineview模块:
    用qt51210 qmake编译pro文件
    在这里插入图片描述
    报错1:
    在这里插入图片描述
    权限问题报错,启用root权限即可。
    报错2:
    Required gperf could not be found.
    QtWebEngine will not be built.
    在这里插入图片描述
    安装所需模块:
    Sudo apt get install gperf
    这里注意:安装所需模块之后,清除之前的编译残留。

    可能所需的其他包:
    apt-get install bison build-essential gperf flex ruby python libasound2-dev libbz2-dev libcap-dev
    libcups2-dev libdrm-dev libegl1-mesa-dev libgcrypt11-dev libnss3-dev libpci-dev libpulse-dev libudev-dev
    libxtst-dev gyp ninja-build libglu1-mesa-dev libfontconfig1-dev libx11-xcb-dev libicu-dev
    A、安装 libxcb依赖
    sudo apt-get install ‘^libxcb.*-dev’ libx11-xcb-dev libglu1-mesa-dev libxrender-dev libxi-dev libxkbcommon-dev libxkbcommon-x11-dev
    B、安装 Qt Webkit 相关依赖
    sudo apt-get install flex bison gperf libicu-dev libxslt-dev ruby
    C、安装 Qt WebEngine 依赖
    sudo apt-get install libssl-dev libxcursor-dev libxcomposite-dev libxdamage-dev libxrandr-dev libdbus-1-dev libfontconfig1-dev libxtst-dev libpulse-dev libudev-dev libpci-dev libnss3
    -dev libasound2-dev libxss-dev libegl1-mesa-dev gperf bison
    D、安装 Qt Multimedia 依赖
    sudo apt-get install libasound2-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev
    E、安装 QDoc 相关依赖
    sudo apt-get install libclang-6.0-dev llvm-6.0
    F、安装 clang-8
    sudo apt-get install clang-8
    说明:使用 clang 编译C/C++程序源码

    6、移植 - 到其他没有qt环境的linux平台

    1、查找依赖

    ldd AppName
    
    • 1

    2、拷贝所得依赖至程序目录

    # 利用 ldd 提取依赖库的具体路径
    LibList=$(ldd $AppName | awk '{ if (match($3,"/")){ printf("%s "), $3 } }')
    # 拷贝库文件和可执行程序到目标文件夹
    cp $LibList $DstDir
    
    • 1
    • 2
    • 3
    • 4

    3、拷贝qt 编译版本 plugins

    #Qt的插件目录  "/usr/local/QT/qt5.12.10_51210/lib/plugins" 下的所有子目录至 AppPath  (单独拷贝platforms经测试也可)
    
    • 1

    4、拷贝 libQt5XcbQpa51210.so libQt5DBus51210.so.5
    这里采用查找libqeglfs.so依赖的方式获取库(另有一些资料显示天剑软链接,亦可)
    5、完整shell脚本
    保存build.sh,其中添加以下内容

    ##qt linux 环境移植脚本
    ##检测工具linux_方德系统x86导出库脚本
    #$1:应用程序名称
    #$2:qt版本安装目录
    
    #!/bin/sh
    
    # 可执行程序名
    AppName=$1
    
    # 使用的Qt安装目录
    QT_DIR=$2
    
    #Qt的插件目录
    QtPlugins=${QT_DIR}/"plugins"
    
    #Qt的库目录
    QtLib=${QT_DIR}/"lib"
    
    # 当前目录
    CURRENT_DIR=$(cd $(dirname $0); pwd)  
    
    # 目标文件夹
    DstDir=$CURRENT_DIR
    
    # 利用 ldd 提取依赖库的具体路径
    LibList=$(ldd $AppName | awk '{ if (match($3,"/")){ printf("%s "), $3 } }')
    # 拷贝库文件和可执行程序到目标文件夹
    cp $LibList $DstDir
    
    # 拷贝qt插件依赖
    fileList=`ls $QtPlugins`
    for fileName in $fileList
    do
        cp -r "$QtPlugins/$fileName" "$DstDir"
    done
    
    #拷贝 libQt5XcbQpa51210.so.5 && libQt5DBus51210.so.5 拷贝库文件和可执行程序到目标文件夹
    Xcb_Name="libQt5XcbQpa51210.so.5"
    DBus_Name="libQt5DBus51210.so.5"
    
    Xcb_lib_Path=$(ldd "$CURRENT_DIR/platforms/libqxcb.so" | grep $Xcb_Name | awk '{ if (match($3,"/")){ printf("%s "), $3 } }')
    DBus_lib_list=$(ldd "$CURRENT_DIR/platforms/libqxcb.so" | grep $DBus_Name | awk '{ if (match($3,"/")){ printf("%s "), $3 } }')
    
    cp $Xcb_lib_Path $DstDir
    cp $DBus_lib_list $DstDir
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47

    6、使用修改及注意
    ./build 应用程序名 qt安装路径

    ./build AppName /uar/local/Qt/qt5.12.10

    7、拷贝到裸机测试通过。

  • 相关阅读:
    面经 | Go语言知识点
    FreeRTOS 内存管理策略
    基于51单片机的简易可调时钟闹钟Proteus仿真
    ASP.NET MVC--过滤器
    分享几个常用的国外英文论文文献数据库,先收藏再说
    淘宝API接口,交易,退款退货,物流数据获取,erp系统对接交易订单
    Java编程常见问题汇总六
    DNS部署与安全
    Arduino驱动Si7021温湿度传感器(温湿度传感器)
    apache jmeter怎么用
  • 原文地址:https://blog.csdn.net/qq_36939187/article/details/127632515