qt5.12.10 在linux(国产系统)的源码编译、移植问题记录

2023-10-27

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

2、编译

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

或者指定后缀

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

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

sudo  make

4、安装

sudo make install

3、安装后目录

1、查找

find / -name qmake

2、版本

****/qmake --version

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

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

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

3、拷贝qt 编译版本 plugins

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

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

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

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

qt5.12.10 在linux(国产系统)的源码编译、移植问题记录 的相关文章

  • 错误 LNK2001:无法解析的外部符号 __CxxFrameHandler3

    我正在将 Qt 从 VS 2013 迁移到 Qt 5 10 1 到 VS 2015 出现以下多个链接错误 error LNK2001 unresolved external symbol CxxFrameHandler3 error LNK
  • 从布局中按名称获取小部件

    如果我想从 python Qt 的布局中获取特定的小部件 我应该如何进行 到目前为止我所做的 for i in range self ui horizontalLayout 14 count here it does fail name s
  • 如何在 Qt 中以编程方式制作一条水平线

    我想弄清楚如何在 Qt 中制作一条水平线 这很容易在设计器中创建 但我想以编程方式创建一个 我已经做了一些谷歌搜索并查看了 ui 文件中的 xml 但无法弄清楚任何内容 ui 文件中的 xml 如下所示
  • 如何将图像显示为缩略图

    我有一个QTreeView显示硬盘驱动器和目录 我也有一个QListView显示图像文件如下 但我想将图像显示为缩略图 如下所示 My code mainWidget mainWidget QWidget parent QWidget pa
  • 使用 Visual Studio 2013 构建 Qt 5.2.1 的静态版本

    几天来我一直在尝试使用 Visual Studio 2013 构建 Qt 的静态版本 我就是不明白我做错了什么 System Windows 7 64 位 Visual Studio 2013 仍安装 Visual Studio 2012
  • QToolButton:更改菜单位置

    使用菜单时QToolButton菜单显示在按钮的正下方 有没有办法在按钮的左侧 右侧显示菜单 我知道这个问题不久前已得到回答 但我想为此问题添加新答案 因为接受的答案不再有效 实际上 更改 QToolButton 上的菜单位置非常容易 您需
  • JavaFX 中 WebView 的性能

    我有一个 HTML5 UI 和一个 Java 后端 并且希望避免在纯 java 中重建 HTML ui 所以我的想法是运行本地 Web 服务器并使用 WebView 在 本机 窗口中呈现它 解决方案似乎是使用可以嵌入到 swing 中的 J
  • 无法从 com.android.aaptcompiler.ParsedResource@ef79973 提取资源

    无法从 com android aaptcompiler ParsedResource ef79973 提取资源 无法从 com android aaptcompiler ParsedResource 4c95ce87 提取资源 C Use
  • Qt 插槽是否与其他代码并行运行?

    在此函数示例中 void MyClass myFunction emit MySignal1 emit MySignal2 如果我有slot1倾听MySignal1 and slot2倾听MySignal2 1 Is slot1总是会在之前
  • 将 gnuplot 嵌入现有 QtWidget 中

    我正在用 C 创建一个 伪 实时绘图应用程序 使用 gnuplot 作为绘图后端 我的要求之一是绘图必须位于现有窗口内 而不是有一个单独的绘图窗口 gnuplot 默认为 Gnuplot 有一个选项可以指定 Qt 小部件 ID 这似乎适合我
  • Qml 模块未找到 CPP 类注册与新的 QML_ELEMENT r

    我尝试使用 Qt5 15 0 和新宏 QML ELEMENT 在 QML 中注册我的自定义 CPP 类 但找不到该模块 Qt Creater 帮助文件描述了 QML ELEMENT 的步骤 我也检查了 Qt 手册 但没有幸福的结局 http
  • 如何将 zlib 添加到现有的 qt 安装中

    如何将 zlib 添加到 Qt 的现有安装中 我对此很陌生 所以请给我详细的描述 提前感谢您的帮助 zlib 包含在 Qt 核心库中 如果你想在 Qt 程序中使用 zlib 函数 你只需要包含 src 3rdparty zlib 中的 zl
  • 如何在 Qt 应用程序中通过终端命令运行分离的应用程序?

    我想使用命令 cd opencv opencv 3 0 0 alpha samples cpp cpp example facedetect lena jpg 在 Qt 应用程序中按钮的 clicked 方法上运行 OpenCV 示例代码
  • 是否可以在 Qt Creator 中将 Qt 样式表与升级的小部件一起使用?

    我正在尝试使用 Qt 样式表对标准小部件进行一些重大的重新设计 因此 在为不同的小部件手动完成大部分工作之后 objectName选择器 我决定以某种方式对类似的小部件进行分组 例如我有多个QFrames其作用类似于内部表单中的标题 我希望
  • 将 QByteArray 从大端转换为小端

    我想我在这里有点不知所措 我尝试了这么简单的事情 我不敢相信没有任何内置的 Qt 使用 Qt 5 6 2 我尝试将 QByteArray 内的数据从大端转换为小端 总是从相同的测试 QByteArray 开始 就像这样 QByteArray
  • 为什么 QGraphicsWidget 的选择边框在 QGraphicsScene 中不可见?

    我已经通过一个小部件添加到图形场景 QGraphicSscene QGraphicsProxyWidget 问题是 当我选择该项目时 它被选中 但选择边框不可见 这是代码 QDial dial new QDial Widget dial g
  • 如何在qt中创建正确的退出按钮

    我正在尝试创建一个退出按钮来正确关闭我在 QT 中制作的 GUI 我尝试通过以下方式执行此操作 include
  • 在 WebView 中注入 Javascript 桥

    我想从 Android 网页中提取一些内容 我知道有一些库可以解析 HTML 但我想也许我可以稍微作弊一下 这就是我正在做的 使用应用程序上下文以编程方式创建 WebView 因此不必在 UI 中显示它 加载网页 附上JS接口 注入一些 J
  • 为什么总是在 mouseDoubleClickEvent 之前调用 mousePressEvent

    请考虑以下代码 include
  • 使用 Qt 的网络服务

    我正在寻找使用 Qt 服务器端 实现 Web 服务的代码 如果您有任何信息 我将不胜感激 Regards 您可以使用libqxt http libqxt bitbucket org doc 0 6 qxtweb html实现服务器端Web服

随机推荐

  • oracle 查询随机数据结构,批量随机键值查询测试

    摘要 当数据量巨大时 使用大批量随机键值集获取对应记录集合 不仅仅考验数据库软件本身 更在于程序员对数据的理解 如何在硬件资源有限的情况下将性能发挥到极致 点击 批量随机键值查询测试 来乾学院一探究竟 本次测试主要针对集算器组表索引实现的批
  • 15个 Android 通用流行框架

    转载自 http www techug com 15 android framework biz MjM5OTA1MDUyMA mid 407358558 idx 2 sn b21877f23bf4063fa311185009c1f0b7
  • PLSQL显示优化

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 首选项 Tools gt Preferences 1 字体大小调整 高分屏看的清 2 设置关键字自动大写 3 设置关键字颜色 实现效果 转载于 https my oschi
  • kdj超卖_KDJ买卖口诀:“J值大于100逐步卖,J值接近负值逐步买”,从贫穷到富有原来如此简单...

    KDJ指标又叫随机指标 是一种相当新颖 实用的技术分析指标 指标构成 K线是快速确认线 数值在90以上就是超买 数值在10以下就是超卖 D线是慢速主干线 数值在80以上就是超买 数值在20一下就是超卖 J线是方向敏感线 当J值大于100 特
  • 编程小记—— C/C++中 x & -x 表示含义

    说明 看多了各种优秀看源代码的经常会遇到一些很常见的公式 本篇文章记录的 x x 就是其中的一种 含义 我们都知道 x 的值 其实就是在x的值的基础上进行按位取反 x 之后在增加1所得 也就是说 x x x x 1 x 为偶数 我们都知道
  • web信息收集

    title 信息收集 tags null categories 信息收集 null date 2021 03 20 18 40 54 keywords top img cover updated sticky description cop
  • 用 request请求对象 获取请求头里的 信息

    1 根据请求头名称获取一个值 String connection request getHeader connection System out println connection System out println getHeader
  • 8个重构技巧使得Python代码更Pythonic

    1 合并追加到列表声明 我们从一个简单的开始 不是声明一个空列表然后附加到它 而是直接用所有元素初始化列表 这缩短了代码并使意图更加明确 它的性能也稍微好一些 因为它避免了对 append 的函数调用 这同样适用于填充其他集合类型 如集合和
  • Angular4.0_开发准备

    启动Angular过程介绍 启动时加载了哪个页面 启动时加载了哪些脚本 这些脚本做了什么事 默认情况下是index对应的文件是启动时加载的页面 main ts是启动时的起点文件 main ts 核心模块提供的enableProdMode用来
  • 多媒体指令(灰度像素最大值)

    如果不是处理的灰度图像 那么最大值也就没什么意思了 彩色图也可以转成灰度图嘛 虽然用了汇编 不过没有使用多媒体指令 灰度图像的RGB都一样 没必要使用mmx寄存器了 直接对单个字节处理就行了 获得最小值和获得最大值原理一样 只需改一个指令
  • 基础指南 之 归并排序

    归并排序 两个有序数组的归并 数组 a 和数组 b 都是非降序的数组 数组长度分别为 m 和 n 将两个数组合并成一个升序数组 c 程序如下所示 void merge int a int m int b int n int c int i
  • com.rabbitmq.client.ShutdownSignalException: connection error;连接rabbitMQ失败

    com rabbitmq client ShutdownSignalException connection error 连接rabbitMQ失败 大概率原因是权限不足 rabbitmqctl set permissions p admin
  • 51单片机-LED篇

    目录 准备工作 点亮一个LED灯 写程序 烧录 LED闪烁 延时代码Delay500ms 烧录 LED流水灯 代码 对LED流水灯代码进行优化 增加复用性 延时代码 代码 准备工作 使用到的单片机是普中51单片机 使用到的软件是Keil u
  • 写作副业怎么弄?写文章的副业应该怎么做?

    现在越来越流行 斜杠青年 这个词了 人们总是希望在做好本职工作的基础上 还能够有另外一份获取收入的工作 也就是 副业 而在 副业 的众多选项里 很多人都看好 写作 这一项 但是 当我们普通人想要开启写作之路 赚取副业收入的时候 具体应该怎么
  • 用户友好性检测

    我们一般通过三个指标来检验一个网站是否对于用户友好 这三个指标分别是 链接的可用性 访问速度体验和查找信息的便捷度 一 链接的可用性 试想 一个访问者来到你的网站 点击一个超级链接 却发现浏览器只返回一个错误404 页面 如果网页中不可用链
  • Unity3D 引擎学习2022资料整理(二)

    Utils C APR Apache Portable Runtime 另一个跨平台的实用函数库 Apache2 0 官网 C Algorithms 一个常用算法和数据结构的集合 官网 CPL The Common Pipeline Lib
  • edge浏览器受信任_Edge 浏览器如何添加信任站点

    Microsoft Edge 无法添加信任站点 组策略没有批量设置 只能逐条设置 然后从DC推到所向域内客户端 如果你是用Site to Zone Assignment List Enabled策略或来设置信任站点的话 客户端确实无法手动添
  • OpenHarmony之docker容器的基本用法

    Docker使用示例 docker移植至OpenHarmony的过程可参考 https blog 51cto com u 14601312 5692202 下面以rk3568 OpenHarmony为例 介绍一下如何进行容器制作 导入及使用
  • 一招解决报错:pyassimp.errors.AssimpError: assimp library not found

    文章目录 1 问题描述 2 原因分析 3 解决方法 1 问题描述 在使用pip install pyassimp安装pyassimp库后 调用时会出现错误 File root anaconda3 envs kgn lib python3 8
  • qt5.12.10 在linux(国产系统)的源码编译、移植问题记录

    1 概述 Qt版本 Qt5 12 10 Qt 官网下载地址 Qt官网 路径 Qt5 12 10源码目录目录下下载 qt everywhere src 5 12 10 tar xz 编译平台 方德 其余架构亦可考 2 编译源码记录 1 下载源