1 分钟阅读 次阅读

概要:本文记录了 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

留下评论