编译源码安装 Qt 5.15


在安装 ns-3.40 时发现开发者使用的 Qt 版本已经高于 apt 默认安装的 Qt 版本,调用了部分新函数导致 ns-3.40 无法被编译,故安装了最新版本的 Qt 5.15,过程繁杂特此记录分享。

1. 下载源码

查看 Qt 的最新版本 Index of /archive/qt
在这里插入图片描述
截至目前,最新的 Qt 5 版本是 Qt 5.15.11.

自 Qt 5.15 开始,不再提供 open source offline installers,也就是原来的 .run 的安装文件,只能通过源码编译来安装了 OFFLINE_README.txt

选择目标版本,下载 single 文件夹下的源码文件和 md5 校验码。

# 下载源码和源码的 md5 校验码
wget https://download.qt.io/archive/qt/5.15/5.15.11/single/qt-everywhere-opensource-src-5.15.11.tar.xz
wget https://download.qt.io/archive/qt/5.15/5.15.11/single/md5sums.txt
# 校验
md5sum qt-everywhere-opensource-src-5.15.11.tar.xz
# output: 37b79a3764b0c9157fa3686df209b25a  qt-everywhere-opensource-src-5.15.11.tar.xz
# 解压并进入目录
tar -xvf qt-everywhere-opensource-src-5.15.11.tar.xz
cd qt-everywhere-src-5.15.11/

2. 安装依赖项

参考:
Building Qt 5 from Git - Qt Wiki
How to Compile Qt from Source Code on Linux | ICS

以下命令涵盖了大部分基础编译的依赖项:

sudo apt install bison build-essential flex gperf libasound2-dev libatkmm-1.6-dev libbz2-dev libcap-dev libcups2-dev libdrm-dev libegl1-mesa-dev libfontconfig1-dev libfreetype6-dev libglu1-mesa-dev  libicu-dev libnss3-dev libpci-dev libpulse-dev libssl-dev libudev-dev libx11-dev libx11-xcb-dev libxcb-composite0 libxcb-composite0-dev libxcb-cursor-dev libxcb-cursor0 libxcb-damage0 libxcb-damage0-dev libxcb-dpms0 libxcb-dpms0-dev libxcb-dri2-0 libxcb-dri2-0-dev libxcb-dri3-0 libxcb-dri3-dev libxcb-ewmh-dev libxcb-ewmh2 libxcb-glx0 libxcb-glx0-dev libxcb-icccm4 libxcb-icccm4-dev libxcb-image0 libxcb-image0-dev libxcb-keysyms1 libxcb-keysyms1-dev libxcb-present-dev libxcb-present0 libxcb-randr0 libxcb-randr0-dev libxcb-record0 libxcb-record0-dev libxcb-render-util0 libxcb-render-util0-dev libxcb-render0 libxcb-render0-dev libxcb-res0 libxcb-res0-dev libxcb-screensaver0 libxcb-screensaver0-dev libxcb-shape0 libxcb-shape0-dev libxcb-shm0 libxcb-shm0-dev libxcb-sync-dev libxcb-sync1 libxcb-util-dev libxcb-util0-dev libxcb-util1 libxcb-xf86dri0 libxcb-xf86dri0-dev libxcb-xfixes0 libxcb-xfixes0-dev libxcb-xinerama0 libxcb-xinerama0-dev libxcb-xkb-dev libxcb-xkb1 libxcb-xtest0 libxcb-xtest0-dev libxcb-xv0 libxcb-xv0-dev libxcb-xvmc0 libxcb-xvmc0-dev libxcb1 libxcb1-dev libxcomposite-dev libxcursor-dev libxdamage-dev libxext-dev libxfixes-dev libxi-dev libxrandr-dev libxrender-dev libxslt1-dev libxss-dev libxtst-dev perl ruby  python-is-python2 llvm libclang-dev zstd dbus libpango1.0-dev libcogl-pango-dev libjpeg-dev libdbus-1-dev libdbus-glib-1-dev
sudo apt install libfontconfig1-dev libfreetype6-dev libx11-dev libx11-xcb-dev libxext-dev libxfixes-dev libxi-dev libxrender-dev libxcb1-dev libxcb-glx0-dev libxcb-keysyms1-dev libxcb-image0-dev libxcb-shm0-dev libxcb-icccm4-dev libxcb-sync0-dev libxcb-xfixes0-dev libxcb-shape0-dev libxcb-randr0-dev libxcb-render-util0-dev  libxkbcommon-dev libxkbcommon-x11-dev

当前环境是 Ubuntu 20.04.4 LTS,如果是其他版本的 Ubuntu 或其他 Linux 发行版,上述依赖项的包名可能不同,请参考 Building Qt 5 from Git - Qt Wiki 安装基础依赖项。

Building Qt 5 from Git - Qt Wiki 还给出了每个 Qt 组件的具体依赖项,如果需要完整编译 Qt 可以参考该网站。这里以 Qt WebEngine 为例,如果以下依赖没有满足,Qt 会默认不编译 Qt WebEngine
在这里插入图片描述

3. 编译

./configure
# 键入 o 选择 open source 编译
# 键入 y 选择接受 license
sudo make -j8
sudo make install

4. qtchooser

qtchooser 是管理 Qt 版本的工具,我们使用 -install 安装对应的版本

sudo apt install qtchooser
# 其中 qt5.15.11 是我们给版本的命名, 后面的地址根据安装位置确定 (更换版本同理)
qtchooser -install qt5.15.11 /usr/local/Qt-5.15.11/bin/qmake
# 设置环境变量, 启用 qt5.15.11, 这个要与我们的命名保持一致
sudo vim /etc/profile
# 最后补充 
export QT_SELECT=qt5.15.11

此外,建议不要直接将 /usr/local/Qt-5.15.11/bin/qmake 软连接到 /usr/bin 下,该操作导致只有 qmake 指令被正确链接,其他 /usr/local/Qt-5.15.11/bin 下的指令会出现版本冲突或软链接为空的错误。我们应该正确使用 qtchooser 来管理 Qt 版本。

检查安装是否成功:

qmake -version
# QMake version 3.1
# Using Qt version 5.15.11 in /usr/local/Qt-5.15.11/lib

5. Qt Designer 和 Qt Assistant

根据 How to Compile Qt from Source Code on Linux | ICS,完成安装后可以打开 Qt Designer.
由于我的 Qt 安装在了服务器上,缺少图形界面,就挪用连接里的图片了:

/usr/local/Qt-5.15.11/bin/designer

如果正确配置了 qtchooser,也可以直接使用 designer 指令打开 Qt Designer.

在这里插入图片描述
Qt Assistant 的编译安装:

sudo make docs
sudo make install_docs
/usr/local/Qt-5.5.11/bin/assistant

在这里插入图片描述

### 编译 Qt 5.15.16 的准备工作 由于官方已经停止提供 Qt 5.15 版本的二进制安装包,因此需要下载源码自行编译安装或使用商业授权版本[^1]。 #### 下载源码 前往 GitHub 或其他可信资源获取 Qt 5.15.16 源码压缩包。解压到合适位置: ```bash tar -xvf qt-everywhere-opensource-src-5.15.16.tar.xz cd qt-everywhere-opensource-src-5.15.16 ``` #### 配置编译环境 进入解压后的源代码目录并执行配置命令。对于 Ubuntu 系统而言,推荐如下配置参数以适应大多数开发场景: ```bash ./configure \ -prefix /opt/qt-5.15.16 \ -release \ -opensource \ -confirm-license \ -nomake examples \ -nomake tests \ -qt-host-path /usr/lib/x86_64-linux-gnu/qt5/ ``` 上述命令指定了安装路径为 `/opt/qt-5.15.16` 并选择了开源版协议;同时跳过了示例程序和测试套件的构建来加快整个过程;最后通过 `-qt-host-path` 参数指定主机端 Qt 工具链的位置以便交叉编译支持[^2]。 #### 开始编译 配置完成后即可启动多线程编译流程: ```bash make -j$(nproc) ``` 此指令会利用所有可用 CPU 核心加速编译速度。根据机器性能不同耗时可能较长,请耐心等待直至完成。 #### 安装至系统 当编译无误结束后可继续进行实际部署工作: ```bash sudo make install ``` 这一步骤将会把刚刚编译好的库文件复制到之前 `./configure` 中定义的目标路径下。 #### 更新环境变量 为了让终端识别新的 Qt 库,在 `.bashrc` 文件里追加相应设置语句,并立即生效这些更改: ```bash echo 'export PATH=/opt/qt-5.15.16/bin:$PATH' >> ~/.bashrc source ~/.bashrc ``` 现在应该可以在任意地方调用新版本 Qt 提供的各种工具了[^3]。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值