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

基于Ubuntu20.04的环境,编译QT5.15.17源码

这篇文章主要是描述在Ubuntu20.04的环境下,如何编译QT5.15源码,做个记录,供参考学习,一起进步。

一、Ubuntu20.04在编译QT前,需要配置的环境

安装一些必要的依赖项:

sudo apt-get install build-essential \libgl1-mesa-dev \libglu1-mesa-dev \libegl1-mesa-dev \libgles2-mesa-dev \libxrandr-dev \libxext-dev \libxtst-dev \libxrender-dev \libxkbfile-dev \libsqlite3-dev \libssl-dev \libcurl4-openssl-dev \libicu-dev \libfontconfig1-dev \libfreetype6-dev \libinput-dev \libxcb1-dev \libx11-xcb-dev \libxcb-image0-dev \libxcb-keysyms1-dev \libxcb-shm0-dev \libxcb-icccm4-dev \libxcb-sync-dev \libglib2.0-dev \libpulse-dev \libavahi-client-dev \libavahi-core-dev \libsqlite3-dev \libdbus-1-dev \libxshmfence-dev \mesa-common-dev \g++ \gcc \make

二、获取QT5.15源码

1. 下载源码包

我这里是在 清华大学开源软件镜像站 获取的QT5.15的源码

cd ~/work/qtwget https://mirrors.tuna.tsinghua.edu.cn/qt/official_releases/qt/5.15/5.15.17/single/qt-everywhere-opensource-src-5.15.17.tar.xz

2. 解压包

下载完成,解压源码包

tar -xvf qt-everywhere-opensource-src-5.15.17.tar.xz

三、配置QT

1. 解压后进入QT的目录

cd qt-everywhere-src-5.15.17/

2. 可以单独创建一个build目录,在该目录下创建build.sh 脚本

mkdir build
cd build/
vim build.sh

build.sh 脚本的内容:

cd ../qt-everywhere-src-5.15.17
./configure \-prefix ../build/qt5.15.17 \-opensource \-confirm-license \-developer-build \-c++std c++14 \-nomake examples \-nomake tests

运行下build.sh试试:

chmod 777 build.sh
./build.sh

运行成功

Qt is now configured for building. Just run 'make'.
Once everything is built, you must run 'make install'.
Qt will be installed into '/home/traveler/work/qt/build/qt5.15.17'.Prior to reconfiguration, make sure you remove any leftovers from
the previous build.

四、配置QT的configure 关键参数说明

分类参数作用
安装目录类-prefix <dir>最终 make install 时把 Qt 装到哪里(默认 /usr/local/Qt-5.x.x)。
-bindir / -libdir / -headerdir …把 bin/lib/include 再细分到不同目录,通常没必要动。
版权/许可证-opensource使用 LGPL/GPL 开源版。
-commercial商业版(需要商业授权)。
-confirm-license非交互式自动接受协议,CI/脚本必备。
构建范围-nomake examples / tests不编译 examples 和 tests,可大大加快编译。
-skip <module>整个模块不参与构建。例:-skip qtwebengine 跳过 QtWebEngine(需要 Chromium,编译慢且吃内存)。
-make libs -make tools只编译 libs 与 tools(默认已包含)。
第三方库策略-qt-<lib>使用 Qt 自带的第三方库(如 -qt-zlib)。
-system-<lib>使用系统已安装的库,体积更小、后续更新由系统管理。例:-system-zlib -system-pcre -system-freetype
-no-<lib>完全禁用该库。例:-no-opengl 把 OpenGL 支持关掉。
GUI 与插件-qt-xcb使用 Qt 自带的 xcb 插件实现,避免发行版 xcb 版本差异导致运行时找不到平台插件。
-opengl desktop / es2指定 OpenGL 实现方式;桌面 Linux 一般 desktop 即可。
调试/优化-debug / -release / -debug-and-release决定编译 Debug 还是 Release 版本。
-static / -shared默认 -shared 动态库;静态库则用 -static(需再处理 LGPL 合规)。
-optimize-sizeRelease 时进一步优化体积。
交叉编译-xplatform linux-arm-gnueabi-g++目标平台名(mkspecs 目录下)。
-device <device>具体设备描述文件。
-device-option CROSS_COMPILE=<toolchain>指定交叉工具链前缀。
-sysroot <dir>交叉编译时根文件系统路径。
平台相关-platform linux-g++主机编译器,Ubuntu 默认 g++ 已够用。
-platform linux-clang想用 clang 就换这个。

五、 编译并安装Qt

make -j8
make install

等待许久,编译完成并install安装后,在路径下就有了qt5.15.17文件夹了

traveler@123:~/work/qt/build$ ls
build.sh  qt5.15.17

六、配置QT运行的环境变量

sudo vim ~/.bashrc增加如下三行:export QTDIR=/usr/local/Qt5.15.17
export PATH=$QTDIR/bin:$PATH
export MANPATH=$QTDIR/man:$MANPATH再source一下使得环境变量生效
source ~/.bashrc

7. 验证Qt安装

完成以上步骤后,Qt 5.15.17已经在Ubuntu 20.04系统上安装好了。

通过运行qmake --version来验证安装。

qmake --version
QMake version 3.1
Using Qt version 5.15.17 in /usr/local/Qt5.15.17/lib

验证成功!

      http://www.xdnf.cn/news/17406.html

      相关文章:

    • Lua语言元表、协同程序
    • JavaWeb(苍穹外卖)--学习笔记17(Apache Echarts)
    • LightGBM 与 GBDT 在机器学习中的性能与特点比较
    • Graph-R1:一种用于结构化多轮推理的智能图谱检索框架,并结合端到端强化学习
    • 【最后203篇系列】031 构建MCP尝试
    • Docker Compose 部署高可用 MongoDB 副本集集群(含 Keepalived + HAProxy 负载均衡)
    • 从零学习three.js官方文档(二)——图元
    • 去除Edge微软浏览器与Chrome谷歌浏览器顶部出现“此版本的Windows不再支持升级Windows 10”的烦人提示
    • JavaWeb(苍穹外卖)--学习笔记18(Apache POI)
    • 安全引导功能及ATF的启动过程(五)
    • 数据结构:栈和队列(Stack Queue)基本概念与应用
    • AI编程插件对比分析:CodeRider、GitHub Copilot及其他
    • 云服务器最新版MySQL 安装步骤
    • 第4章 程序段的反复执行1 for语句P115练习题(题及答案)
    • Matlab系列(004) 一 Matlab分析正态分布(高斯分布)
    • cuOpt_server错误分析
    • 如何解决pip安装报错ModuleNotFoundError: No module named ‘fastai’问题
    • 面试题-----Spring Cloud
    • LLM 的向量的方向表示语义,向量长度表示什么
    • 强化学习笔记:从Q学习到GRPO
    • 1.JavaScript 介绍
    • Linux系统编程Day10 -- 进程管理
    • 分治-快排-面试题 17.14.最小k个数-力扣(LeetCode)
    • 在 Vue 中动态引入SVG图标的实现方案
    • Horse3D引擎研发笔记(三):使用QtOpenGL的Shader编程绘制彩色三角形
    • 第十九天-输入捕获实验
    • Redis面试题及详细答案100道(01-15) --- 基础认知篇
    • synchronized和RentrantLock用哪个?
    • LangChain-Unstructured 基础使用:PDF 与 Markdown 处理解析
    • 深入解析进程创建与终止机制