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

linux源码编译qt6.5问题解决

Qt编译版本问题

在编译一个项目时,发现ubuntu22 apt方式安装的默认时qt6.2。但是项目要求6.4,为了安装简单,升级ubuntu到了24,直接一键安装qt6.4.2。
开始编译了,一切正常进行中,突然报错,

#include <QtLogging>

找不到QtLogging头文件,一番查阅发现ubuntu 发布的qt6.4.2小版本不包括这个,小版本等级太低。
所以,只能通过源码编译了。

Qt源码编译

configure配置llvm问题解决

参考官方教程:
https://doc.qt.io/qt-6/linux-building.html,直接下个qt6.5试试。

mkdir -p ~/dev/qt-build
cd ~/dev/qt-build
/tmp/qt-everywhere-src-6.7.2/configure

这里遇到一个问题,报错libclangBasic.a找不到,网上说安装libclang-dev就可以了。

sudo apt install libclang-dev

然后发现还是找不到,怎么办…
我直接在/usr/lib/下找到了三个目录,llvm-14、llvm-15、llvm-18,搜索发现只有18目录下面有这个.a文件,所以设置下面的环境变量:

export LLVM_INSTALL_DIR=/usr/lib/llvm-18/

configure一键打通,完成。

build过程依赖缺失解决

现在开始build,又报错了…

cmake --build . --parallel
cmake --install .
/usr/bin/ld: qtbase/src/corelib/CMakeFiles/Core.dir/text/qstringconverter.cpp.o: in function `QStringConverterBase::State::reset()':
qstringconverter.cpp:(.text+0x3567): undefined reference to `ucnv_reset_73'
/usr/bin/ld: qtbase/src/corelib/CMakeFiles/Core.dir/text/qstringconverter.cpp.o: in function `QStringConverter::QStringConverter(char const*, QFlags<QStringConverterBase::Flag>)':
qstringconverter.cpp:(.text+0x37d8): undefined reference to `ucnv_open_73'
/usr/bin/ld: qstringconverter.cpp:(.text+0x381d): undefined reference to `ucnv_setToUCallBack_73'
/usr/bin/ld: qstringconverter.cpp:(.text+0x3837): undefined reference to `ucnv_setFromUCallBack_73'
/usr/bin/ld: qstringconverter.cpp:(.text+0x3850): undefined reference to `ucnv_getName_73'
/usr/bin/ld: qstringconverter.cpp:(.text+0x3867): undefined reference to `ucnv_getStandardName_73'
/usr/bin/ld: qstringconverter.cpp:(.text+0x3890): undefined reference to `ucnv_getMaxCharSize_73'
/usr/bin/ld: qstringconverter.cpp:(.text+0x38eb): undefined reference to `ucnv_setToUCallBack_73'
/usr/bin/ld: qstringconverter.cpp:(.text+0x3905): undefined reference to `ucnv_setFromUCallBack_73'
/usr/bin/ld: qstringconverter.cpp:(.text+0x3928): undefined reference to `ucnv_getStandardName_73'
/usr/bin/ld: qstringconverter.cpp:(.text+0x393c): undefined reference to `ucnv_close_73'

网上说是anaconda环境base和本机冲突了,我直接deactiva anaconda base环境。发现没有解决。

which conda
mv /home/xxx/miniconda3 /home/xxx/miniconda3_back

然后编译,这个报错就解决了。

遇到下一个报错:

 error: ‘XKB_KEY_dead_lowline’ was not declared in this scope; did you mean ‘XKB_KEY_dead_belowring’?

这是qt的一个bug,https://bugreports.qt.io/browse/QTBUG-117950
安装网址上,我下载的6.5.0没有修复,我直接下载6.6.3吧。

Fix Version/s:
5.15.16, 6.2.11, 6.5.4, 6.6.1, 6.7.0 FF

我们configure的时候skip一些内容快一些:

sudo apt install gperf bison flex libvulkan-dev
configure -prefix /usr/local -opensource -release -sysconfdir /etc/xdg -openssl -no-eglfs  -make libs -skip qtandroidextras -skip qtmacextras -skip qtwinextras -skip qtcanvas3d -skip qt3d -skip qtgraphicaleffects -skip qtpurchasing -confirm-license 

就可以成功编译安装了。

Qtwayland

我的项目需要QtWayland,https://stackoverflow.com/questions/42352743/how-to-build-qtwayland。

configure -feature-wayland-server

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 基于Spring boot + Vue的灾难救援系统
  • Mojo值的生命周期(Life of a value)详解
  • Python酷库之旅-第三方库Pandas(062)
  • 【WPF开发】安装环境、新建工程
  • 一文读懂SEnet:如何让机器学习模型学会“重点观察”
  • 【Hadoop-驯化】一文教你轻松搞懂hadoop的基本原理
  • 单个或两个及以上java安装与环境变量配置
  • Java码农人生使用手册——类和对象
  • Python教程(十一):单元测试与异常捕获
  • CTFHub XSS DOM 跳转
  • Python面试整理-第三方库
  • C++面向对象高级编程(I)侯捷 自我总结版
  • vim、sublime、notepad文本编辑器的使用
  • 爬虫中常见的加密算法Base64伪加密,MD5加密【DES/AES/RSA/SHA/HMAC】及其代码实现(二)
  • 设计模式介绍
  • 《Java8实战》-第四章读书笔记(引入流Stream)
  • EOS是什么
  • ESLint简单操作
  • GDB 调试 Mysql 实战(三)优先队列排序算法中的行记录长度统计是怎么来的(上)...
  • iOS高仿微信项目、阴影圆角渐变色效果、卡片动画、波浪动画、路由框架等源码...
  • iOS筛选菜单、分段选择器、导航栏、悬浮窗、转场动画、启动视频等源码
  • JavaScript HTML DOM
  • JSDuck 与 AngularJS 融合技巧
  • ng6--错误信息小结(持续更新)
  • python 装饰器(一)
  • scrapy学习之路4(itemloder的使用)
  • socket.io+express实现聊天室的思考(三)
  • spring cloud gateway 源码解析(4)跨域问题处理
  • webpack入门学习手记(二)
  • WePY 在小程序性能调优上做出的探究
  • windows下如何用phpstorm同步测试服务器
  • 产品三维模型在线预览
  • 后端_MYSQL
  • 警报:线上事故之CountDownLatch的威力
  • 力扣(LeetCode)357
  • 用mpvue开发微信小程序
  • 优秀架构师必须掌握的架构思维
  • 好程序员大数据教程Hadoop全分布安装(非HA)
  • 移动端高清、多屏适配方案
  • #70结构体案例1(导师,学生,成绩)
  • #我与Java虚拟机的故事#连载11: JVM学习之路
  • (2)空速传感器
  • (六)DockerCompose安装与配置
  • (十五)devops持续集成开发——jenkins流水线构建策略配置及触发器的使用
  • (新)网络工程师考点串讲与真题详解
  • .“空心村”成因分析及解决对策122344
  • .bat批处理(二):%0 %1——给批处理脚本传递参数
  • .chm格式文件如何阅读
  • .net core 6 redis操作类
  • .net core 使用js,.net core 使用javascript,在.net core项目中怎么使用javascript
  • .NET NPOI导出Excel详解
  • .Net 基于.Net8开发的一个Asp.Net Core Webapi小型易用框架
  • .Net 垃圾回收机制原理(二)
  • .NET开发不可不知、不可不用的辅助类(一)
  • @JsonSerialize注解的使用