Qt5.15.2 本地编译及安装记录
概要:本文记录了 Qt 5.15.2 的源码下载及本地编译安装过程,包含所需依赖包的安装指令、编译配置参数及安装路径设置等详细步骤,适用于希望在本地构建 Qt 环境的开发者参考。
1. 源码下载地址
从 Qt 官网下载 Qt 5.15.2 源码文件
源站链接:https://download.qt.io/archive/qt/5.15/5.15.2/single/
2. 编译步骤
2.1 安装依赖包
首先更新系统软件包列表,并安装编译 Qt 所需的依赖库:
apt update
apt install build-essential libgl1-mesa-dev libxkbcommon-dev libxkbcommon-x11-dev \
libxcb-xinerama0-dev libxcb-xinerama0 libxcb-icccm4-dev libxcb-image0-dev \
libxcb-keysyms1-dev libxcb-render-util0-dev libxcb-shape0-dev libxcb-sync-dev \
libxcb-xfixes0-dev libxcb-xkb-dev libxcb1-dev libxcb1 libxrender-dev libx11-dev \
libx11-xcb-dev libxi-dev libxext-dev libfontconfig1-dev libfreetype6-dev \
libpng-dev libjpeg-dev libssl-dev libdbus-1-dev libicu-dev libpulse-dev \
libasound2-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev
继续安装 Wayland 和 Python 支持:
apt install libwayland-dev
apt install python
./plugins/platforms/libqxcb.so 库可能即使编译选项中显示的是yes,也可能编译不出来,为了使尽可能编译出来,先安装官网提到这些包 https://doc.qt.io/qt-5/linux-requirements.html
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-sync-dev
libxcb-xfixes0-dev
libxcb-shape0-dev
libxcb-randr0-dev
libxcb-render-util0-dev
libxcb-xinerama-dev
libxkbcommon-dev
libxkbcommon-x11-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-sync-dev libxcb-xfixes0-dev libxcb-shape0-dev libxcb-randr0-dev libxcb-render-util0-dev libxcb-xinerama-dev libxkbcommon-dev libxkbcommon-x11-dev
下面这几个包在Ubuntu20.04中可能安装失败,原因是改名了
sudo apt install libglib2-dev libsrtp0-dev libxcb-xinerama-dev
更新为
sudo apt install libglib2.0-dev libsrtp2-dev libxcb-xinerama0-dev
2.2 进入源码目录并配置编译参数
./configure -prefix /opt/Qt5.15.2 -opensource -confirm-license -release -nomake examples -nomake tests -no-openssl -no-icu -skip qtlocation -xcb -xcb-xlib -bundled-xcb-xinput
参数说明:
- -prefix:指定安装路径为
/opt/Qt5.15.2 - -opensource:使用开源许可证
- -confirm-license:自动确认许可证
- -release:编译 release 版本
- -nomake examples/tests:跳过示例和测试编译
- -no-openssl / -no-icu:不启用 OpenSSL 和 ICU 支持
- -skip qtlocation:跳过 qtlocation 模块
- -xcb:启用 XCB(X Protocol C Binding) 作为 Linux/X11 的图形后端(默认可能已启用)。
- -xcb-xlib:启用 XCB 与 Xlib 的兼容层,确保与旧版 X11 应用的兼容性。
-
-bundled-xcb-xinput:使用 Qt 自带的 xcb-xinput 库(而非系统安装版本),避免系统库版本不兼容问题。
- 如果报错
Feature 'xcb' was enabled, but the pre-condition 'features.thread && libs.xcb && tests.xcb_syslibs && features.xkbcommon-x11' failed. - 尝试安装
sudo apt-get install '^libxcb.*-dev' libx11-xcb-dev libglu1-mesa-dev libxrender-dev libxi-dev libxkbcommon-dev libxkbcommon-x11-dev - 如果还是报错,执行
./configure -recheck-all - 然后重新执行
./configure -prefix /opt/Qt5.15.2 -opensource -confirm-license -release -nomake examples -nomake tests -no-openssl -no-icu -skip qtlocation -xcb -xcb-xlib -bundled-xcb-xinput
2.3 编译与安装
使用多线程编译,加快构建速度(根据 CPU 核心数自动并行):
make -j$(nproc)
make install
3. 编译总结
- 本次编译一次成功
- 然后就发现libqxcb.so
- 于是显式指定参数 -xcb -xcb-xlib -bundled-xcb-xinput,结果配置报错,参考文章 https://blog.csdn.net/lzc721/article/details/123975302 https://blog.csdn.net/e8161871/article/details/124150926 https://github.com/microsoft/vcpkg/issues/16486 https://github.com/ucam-department-of-psychiatry/camcops/issues/3 https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/-/issues/2090
留下评论