当前位置: 首页 > article >正文

QT5.15在Ubuntu22.04上编译流程

在我们日常遇到的很多第三方软件中,有部分软件针对开发人员,并不提供预编译成果物,而是需要开发人员自行编译,此类问题有时候不是问题(编译步骤的doc详细且清晰时),但有时候又很棘手(编译步骤的doc少,对应的configure脚本或者CMakeLists脚本又很长且缺少help选项)。本文就针对一款开发调试软件,但是需要依赖于QT5库进行编译生成,话不多说,开始进行编译QT5。


编译准备

在以前,QT5是往往是直接下载安装的,相信很多Windows端的开发人员都操作过。从官网下载QT时需要登录才能提供下载资源,这一步就很不友好。我们直接采用从镜像站去下载的方式,原来QT的版本仓库是有很多的预构建包供下载的,但是现在已经都被删除了,甚至都见不到5.9版本的踪影,QT最新是推荐QT6,但是由于依赖QT5的问题,所以我们采用最新的5.15.10的源码进行库编译。


编译QT5

QT5的编译步骤其实在QT的相关document中有介绍,其中就有在Linux上进行编译的编译指南。其中主要介绍的是依赖X11窗口系统进行编译。Ubuntu22.04使用的窗口系统是wayland,并非X11,所以这次编译的结果是否可以100%成功具有未知性。
先通过使用configure --help来查看编译脚本的一些可配置信息,可以看到大量的介绍信息,我们采用如下参数来进行预构建配置:

./configure \
-verbose \
-recheck-all \
-opensource \
-confirm-license \
-release \
-shared \
-c++std c++17 \
-make libs \
-nomake tests \
-nomake examples \
-skip qtandroidextras \
-skip qtmacextras \
-skip qtwinextras 
# 省略多个-skip, 可根据情况自己选择跳过哪些模块的编译

在执行配置的过程中,可以看到一些第三方库的可选安装信息,可根据自己的需求去进行安装,例如安装png库apt install libpng。 这边如果没有报错,那么就可以进行下一步编译了,执行make开始编译。


assimp库找不到的问题

编译报错Project ERROR: Library 'assimp' is not defined,在出现这个问题之前,我们已经通过apt install libassimp-dev安装了assimp库了,库版本是5.2.2。 为了解决这个问题,在网上搜索了一下此问题,并没有很好的解决方案。于是查找QT的相关网页与问题反馈,最后找到了一丝线索:

 顺着线索,找到此问题的解决方案的页面,QT团队给出的解释居然是因为使用高于5.0.0版本的assimp库的开发者不多,所以他们并没有想修复此问题,于是这个问题在历代QT5中均会存在。解决方案也很简单,找到图中所框的脚本代码位置,改为框中的内容即可。

在经过这个修改后,发现确实生效,因为再次重新编译时遇到了不一样的错误。


pbrmaterial.h缺少宏定义的问题

这次的编译错误提示是找不到assimp相关的一个头文件中的一个宏定义。

经过确认,该问题在assimp 5.2.3中就得到了修复,而目前Ubuntu的apt仓库中拉取到的最新的为5.2.2,因此还是存在这个问题。所以解决方案就是:完整移除apt下载的assimp库,下载assimp最新源码并编译安装。这个库的编译与安装就不多展开了,比较简单也比较顺利。
等最新版本的assimp安装好后,再次进行QT5的编译即可。


http://www.kler.cn/news/108369.html

相关文章:

  • 归并排序——
  • san.js源码解读之模版解析(parseTemplate)篇——readCall函数
  • Python-自动化绘制股票价格通道线
  • 【Linux】:进程程序替换
  • IP应用场景API的反欺诈潜力:保护在线市场不受欺诈行为侵害
  • 《动手学深度学习 Pytorch版》 10.6 自注意力和位置编码
  • SQL注入原理及思路(mysql)
  • EASYX动画效果实现
  • 【网安AIGC专题10.19】论文6:Java漏洞自动修复+数据集 VJBench+大语言模型、APR技术+代码转换方法+LLM和DL-APR模型的挑战与机会
  • MAYA教程之模型的UV拆分与材质介绍
  • 黑豹程序员-架构师学习路线图-百科:API接口测试工具Postman
  • 8.循环神经网络
  • matlab中字符串转换为数字(str2double函数)
  • 【java爬虫】公司半年报数据展示
  • 明星艺人类的百度百科怎么创建 ?
  • Spring使用注解进行注入
  • 网络综合和简化实频理论学习概述
  • mysql查看数据表文件的存放路径
  • python—openpyxl操作excel详解
  • react中的函数柯里化
  • DWA算法,仿真转为C用于无人机避障
  • CleanMyMac X2024永久免费版mac电脑管家
  • Vue 项目中使用 Pinia 状态管理详细教程
  • 06、SpringCloud -- 订单详情界面实现
  • 阿里云服务器—ECS快速入门
  • 黑客技术(网络安全)—小白自学
  • Jupyter Notebook还有魔术命令?太好使了
  • 【解决方案】ubuntu 解决办法 ImportError: cannot import name ‘_gi‘ from ‘gi‘
  • 软路由安装code-server配置和配置Nodejs开发环境
  • Lvs+Nginx+NDS