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

ubuntu20.04-编译安装Qt5.15.2-C++

文章目录

      • 步骤一:安装依赖项
      • 步骤二:下载Qt 5.15源代码
      • 步骤三:配置并编译Qt
      • 步骤四:配置环境变量
      • 注意事项
      • 更新于2024年

在Ubuntu 22.04 LTS(Jammy Jellyfish)环境下编译Qt 5.15,由于Ubuntu 22.04的官方仓库不再提供Qt 5.15系列的支持,您需要从源代码编译。以下是编译Qt 5.15的大致步骤:

步骤一:安装依赖项

确保系统中已经安装了必要的编译工具和依赖包,例如:

sudo apt update
sudo apt install build-essential libfontconfig1-dev libfreetype6-dev libx11-dev libxext-dev libxrender-dev libxcb1-dev libxi-dev libgl1-mesa-dev libssl-dev gperf libicu-dev pkg-config bison flex qtchooser
sudo apt install libdbus-1-dev

步骤二:下载Qt 5.15源代码

访问Qt官网的Archive部分下载Qt 5.15的源代码包,例如qt-everywhere-src-5.15.2.zip.tar.xz格式。

wget https://download.qt.io/archive/qt/5.15/5.15.2/single/qt-everywhere-src-5.15.2.tar.xz
tar -xf qt-everywhere-src-5.15.2.tar.xz
cd qt-everywhere-src-5.15.2

步骤三:配置并编译Qt

创建一个构建目录,并在其中进行配置和编译。您可以选择只编译所需的模块,如qtbase、qtdeclarative等,或者编译全部模块。以下是一个基本的全局编译示例:

mkdir build
cd build
../configure -opensource -confirm-license -nomake examples -nomake tests -release
../configure -opensource -confirm-license -nomake examples -nomake tests -nomake qt3d -debug-and-release# 如果您需要支持特定平台或特性,比如gtk2主题,则添加相关选项,例如:
# ../configure -opensource -confirm-license -nomake examples -nomake tests -release -qt-xcb -qt-gtk2make -j 8
sudo make install

步骤四:配置环境变量

编译完成后,为了能够方便地使用新编译的Qt版本,可以更新环境变量PATH,将新安装的bin目录添加进去:

echo 'export PATH=/usr/local/Qt-5.15.2/bin:$PATH' >> ~/.bashrc
source ~/.bashrc

请根据实际情况调整上述路径以指向实际安装位置。

注意事项

  • 编译过程可能需要较长时间,取决于您的硬件性能。
  • 在某些情况下,您可能还需要针对特定目标架构或交叉编译进行配置,这会涉及更多的编译参数。
  • Qt 5.15版本不再提供长期技术支持,可能存在与最新Linux内核或其他库不兼容的问题,因此在生产环境中谨慎考虑是否需要降级到这个版本。

更新于2024年

如果您是在2024年执行此操作,请务必检查Qt 5.15源代码与当前Ubuntu 22.04系统组件的兼容性,以及是否有新的已知问题需要解决。如果有可能,建议升级到更高版本的Qt,或者寻找社区维护的适用于Ubuntu 22.04的Qt 5.15 PPA。

相关文章:

  • 动漫风博客介绍页面源码
  • Spring Cloud使用ZooKeeper作为注册中心的示例
  • Nginx实战:1-安装搭建
  • 鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之Rating组件
  • 前端入门:(五)JavaScript 续
  • C语言的字符函数的使用与模拟实现
  • 表单标记(html)
  • 设计模式2-对象池模式
  • [职场] 如何通过运营面试_1 #笔记#媒体#经验分享
  • Stable Diffusion 模型下载:majicMIX reverie 麦橘梦幻
  • 【Linux】信号概念与信号产生
  • WebSocketServer+redis实时更新页面数据
  • 梯度提升树系列7——深入理解GBDT的参数调优
  • GPT-4登场:多模态能力革新,提升ChatGPT与必应体验,开放API助力游戏革新
  • c++ 子进程交互 逻辑
  • 【162天】黑马程序员27天视频学习笔记【Day02-上】
  • 【402天】跃迁之路——程序员高效学习方法论探索系列(实验阶段159-2018.03.14)...
  • 【comparator, comparable】小总结
  • Docker下部署自己的LNMP工作环境
  • Flannel解读
  • happypack两次报错的问题
  • iOS编译提示和导航提示
  • Js基础知识(一) - 变量
  • Less 日常用法
  • Lsb图片隐写
  • Vue 重置组件到初始状态
  • Yeoman_Bower_Grunt
  • 基于 Babel 的 npm 包最小化设置
  • 京东美团研发面经
  • 前端每日实战 2018 年 7 月份项目汇总(共 29 个项目)
  • 如何使用Mybatis第三方插件--PageHelper实现分页操作
  • 首页查询功能的一次实现过程
  • 腾讯优测优分享 | 你是否体验过Android手机插入耳机后仍外放的尴尬?
  • 中文输入法与React文本输入框的问题与解决方案
  • 函数计算新功能-----支持C#函数
  • 选择阿里云数据库HBase版十大理由
  • ​草莓熊python turtle绘图代码(玫瑰花版)附源代码
  • ​软考-高级-系统架构设计师教程(清华第2版)【第20章 系统架构设计师论文写作要点(P717~728)-思维导图】​
  • #{}和${}的区别?
  • #Lua:Lua调用C++生成的DLL库
  • #我与Java虚拟机的故事#连载10: 如何在阿里、腾讯、百度、及字节跳动等公司面试中脱颖而出...
  • (Ruby)Ubuntu12.04安装Rails环境
  • (二十五)admin-boot项目之集成消息队列Rabbitmq
  • (附源码)spring boot北京冬奥会志愿者报名系统 毕业设计 150947
  • (一)认识微服务
  • (转)Linux整合apache和tomcat构建Web服务器
  • (转)Oracle 9i 数据库设计指引全集(1)
  • ***详解账号泄露:全球约1亿用户已泄露
  • ... 是什么 ?... 有什么用处?
  • .bat批处理(六):替换字符串中匹配的子串
  • .NET HttpWebRequest、WebClient、HttpClient
  • .NET开发者必备的11款免费工具
  • .Net下使用 Geb.Video.FFMPEG 操作视频文件
  • .php文件都打不开,打不开php文件怎么办
  • /etc/shadow字段详解