Debian编译Qt5

0 前言

Linux编译Qt5》介绍了Linux系统上编译Qt5的通用方法,本文重点介绍Debian及其衍生系统专用方法。

1 源码

Debian/Ubuntu将源码拆分为若干子项目来管理,可通过下面命令下载源码(下面只列出了3个软件仓库,其实不止):

bash 复制代码
apt source qtbase-opensource-src
apt source qttools-opensource-src
apt source qtdeclarative-opensource-src

2 编译

上述源码封装了debian编译配置,各子项目都可通过下面命令编译(以qtbase-opensource-src为例进行说明,其它子项目类似):

bash 复制代码
sudo apt-get build-dep -y qtbase-opensource-src
cd qtbase-opensource-src-5.15.8+dfsg
DEB_BUILD_OPTIONS="parallel=$(nproc) nocheck" debuild -us -uc -b

需要注意的是,子项目之间可能存在依赖关系,若软件源没有可用的依赖包(例如ubuntu23.04 arm64的旧版软件源(http://old-releases.ubuntu.com/ubuntu/)就缺Qt软件包,导致build-dep命令无法直接安装Qt的编译依赖),则需要根据编译错误提示来编译所依赖的子项目。

若是单向依赖则容易处理,而相互依赖的子项目需要特别处理,例如qtbase-opensource-src和qttools-opensource-src就存在该问题,下面重点说明:

(1)qtbase-opensource-src

qtbase-opensource-src的文档编译依赖qttools-opensource-src等子项目编译出来的软件包:

bash 复制代码
Build-Depends-Indep: qdoc-qt5 (>= 5.15~) <!nodoc>,
                     qhelpgenerator-qt5 (>= 5.15~) <!nodoc>,
                     qtattributionsscanner-qt5 <!nodoc>
# @file: qtbase-opensource-src-5.15.8+dfsg/debian/control

为了打破依赖循环,可添加--build-profiles="nodoc"参数临时禁止文档编译,从而打破依赖关系:

bash 复制代码
DEB_BUILD_OPTIONS="parallel=$(nproc) nocheck" debuild -us -uc -b --build-profiles="nodoc"

待qtbase-opensource-src成功编译后,再编译qttools-opensource-src等子项目即可。等qttools-opensource-src等子项目编译完成,可再次编译qtbase-opensource-src,此时无需关闭文档问题,可使用完整的编译。

(2)qttools-opensource-src、qtdeclarative-opensource-src

需要先编译安装上述qtbase-opensource-src才可以编译该软件仓库,编译方法类似qtbase-opensource-src,此处略。

参考资料

相关推荐
枫叶丹41 分钟前
【Qt开发】Qt系统(十一)-> Qt 音频
c语言·开发语言·c++·qt·音视频
j_xxx404_2 分钟前
Linux:进程控制(创建/终止/等待/获取退出信息/多进程)
linux·运维·服务器
yuluo_YX4 分钟前
Alias for Linux/Mac
linux·elasticsearch·macos
冉佳驹12 分钟前
Linux ——— 磁盘存储原理与文件系统工作机制
linux·磁盘·硬链接·inode·软链接·磁盘线性化·目录的本质
BUG_MeDe15 分钟前
LINUX MTU/MSS(1500 1460等)的一些理解
linux·运维·服务器
风流倜傥唐伯虎15 分钟前
Windows 版 Docker 的 Linux 环境(docker-desktop)与 builder-jammy-base:latest 镜像核心区别
linux·docker·容器
A懿轩A36 分钟前
【Maven 构建工具】Maven 依赖管理详解:坐标、传递、作用域与依赖冲突解决(一篇搞懂)
java·linux·maven
嵩山小老虎10 小时前
Windows 10/11 安装 WSL2 并配置 VSCode 开发环境(C 语言 / Linux API 适用)
linux·windows·vscode
Fleshy数模10 小时前
CentOS7 安装配置 MySQL5.7 完整教程(本地虚拟机学习版)
linux·mysql·centos
a413244710 小时前
ubuntu 25 安装vllm
linux·服务器·ubuntu·vllm