最近被领导安排一项工作任务,在一台比较老的麒麟系统中搭建QT开发环境,但因电脑是内网机,无法连接网络,所以只能通过下载QT源码去编译;现将操作的全流程,所缺失的依赖库,全都记录下来,方便后来者参考。
系统:银河麒麟V10
内核:Linux-4.4.131.D001.64.190906-aarch64-with-Kylin-V10-juniper
CPU:8cores Phytium,FT-2000/4 64bit

录标
- 1.准备工作
-
- [1.1 gcc、g++](#1.1 gcc、g++)
-
- [1.1.1 下载](#1.1.1 下载)
- [1.1.2 解压并准备](#1.1.2 解压并准备)
- [1.1.3 编译安装](#1.1.3 编译安装)
- [1.2 make](#1.2 make)
-
- [1.2.1 下载](#1.2.1 下载)
- [1.2.2 编译安装 make](#1.2.2 编译安装 make)
- [1.3 pkg-config](#1.3 pkg-config)
-
- [1.3.1 下载](#1.3.1 下载)
- [1.3.2 编译安装 pkg-config](#1.3.2 编译安装 pkg-config)
- 2.安装依赖
-
- [2.1 安装zlib](#2.1 安装zlib)
- [2.2 安装xcb-proto](#2.2 安装xcb-proto)
- [2.3 安装xcb-xkb](#2.3 安装xcb-xkb)
- [2.4 安装renderproto](#2.4 安装renderproto)
- [2.5 安装Xrender](#2.5 安装Xrender)
- [2.6 安装randrproto](#2.6 安装randrproto)
- [2.7 安装libXrandr](#2.7 安装libXrandr)
- [2.8 安装libxcb](#2.8 安装libxcb)
- [2.9 安装Python](#2.9 安装Python)
- [2.10 安装Ninja](#2.10 安装Ninja)
- [2.11 安装Meson](#2.11 安装Meson)
- [2.12 安装bison](#2.12 安装bison)
- [2.13 安装libxml2](#2.13 安装libxml2)
- [2.14 安装libxkbcommon](#2.14 安装libxkbcommon)
- [2.15 检查](#2.15 检查)
- 3.音视频相关
-
- [3.1 安装ALSA 库](#3.1 安装ALSA 库)
- [3.2 GStreamer 核心组件](#3.2 GStreamer 核心组件)
-
- [3.2.1 安装libffi](#3.2.1 安装libffi)
- [3.2.2 安装gettext](#3.2.2 安装gettext)
- [3.2.3 安装GLib](#3.2.3 安装GLib)
- [3.2.4 安装gstreamer](#3.2.4 安装gstreamer)
- [3.2.5 安装gst-plugins-base](#3.2.5 安装gst-plugins-base)
- [3.2.6 安装Good Plugins](#3.2.6 安装Good Plugins)
- [3.2.7 安装libv4l](#3.2.7 安装libv4l)
- [3.2.8 验证 GStreamer 安装](#3.2.8 验证 GStreamer 安装)
- 4.Qt编译安装
-
- [4.1 设置环境变量](#4.1 设置环境变量)
- [4.2 编译安装](#4.2 编译安装)
- [4.3 配置QT环境变量](#4.3 配置QT环境变量)
- 5.QtCreator编译安装
- 6.配置qmake
-
- [6.1 打开QtCreator的设置](#6.1 打开QtCreator的设置)
- [6.2 添加新的Qt版本](#6.2 添加新的Qt版本)
- [6.3 选择qmake路径](#6.3 选择qmake路径)
- [6.4 验证添加结果](#6.4 验证添加结果)
- [6.5 克隆或创建新的构建套件](#6.5 克隆或创建新的构建套件)
- [6.6 配置新的构建套件](#6.6 配置新的构建套件)
- 6.字体
-
- [6.1 导入字体](#6.1 导入字体)
-
- [6.1.1 中文字体](#6.1.1 中文字体)
- [6.1.2 英文字体](#6.1.2 英文字体)
- [6.2 代码层面导入字体](#6.2 代码层面导入字体)
-
- [6.2.1 资源文件](#6.2.1 资源文件)
- [6.2.1 使用系统自带的字体](#6.2.1 使用系统自带的字体)
- 7.总结
矫正系统时间:sudo date -s "2026-03-24 14:30:00" # 替换为当前实际时间
一定要校准电脑的时间跟网络时间差不多,否则编译会出问题,内网机踩过的坑!
所有依赖免费提供:https://download.csdn.net/download/cpp_learner/92772827
1.准备工作
编译QT需要gcc、g++、make、pkg-config;所以需要查看系统是否已存在,否则需要自行安装;
通过如下命令查看系统是否已存在相关依赖:
bash
gcc --version
g++ --version
make --version
pkg-config --version
如果gcc、g++版本为5.+版本,则可以正常编译QT;
以下提供下载链接和安装步骤;
1.1 gcc、g++
一般电脑都会存在,无需编译安装;
因编译的qt版本为5.14.2,所以推荐安装gcc 7.5版本左右;
(5.+版本也可以正常编译,编译gcc耗时长,建议没必要不要自编译,使用系统自带的即可!)
1.1.1 下载
GCC 7.5.0下载链接:
https://ftp.gnu.org/gnu/gcc/
| 依赖库 | 推荐版本 | 下载链接 |
|---|---|---|
| GMP | 6.3.0 | https://ftp.gnu.org/gnu/gmp/ |
| MPFR | 4.2.1 | https://ftp.gnu.org/gnu/mpfr/ |
| MPC | 1.3.1 | https://ftp.gnu.org/gnu/mpc/ |
| ISL | 0.26 | https://libisl.sourceforge.io/ |
1.1.2 解压并准备
gcc 编译时需要 gmp、mpfr、mpc(以及可选的 isl)。推荐将这三个依赖放在 gcc 源码目录内一起编译,避免额外配置。
bash
tar -xf gcc-7.5.0.tar.xz
cd gcc-7.5.0
# 下载依赖(如果已单独下载,则手动解压到正确位置)
tar -xf ../gmp-6.3.0.tar.xz && mv gmp-6.3.0 gmp
tar -xf ../mpfr-4.2.1.tar.xz && mv mpfr-4.2.1 mpfr
tar -xf ../mpc-1.3.1.tar.gz && mv mpc-1.3.1 mpc
# 可选 isl
tar -xf ../isl-0.26.tar.xz && mv isl-0.26 isl
1.1.3 编译安装
bash
mkdir build && cd build
../configure --prefix=/usr \
--disable-multilib \
--enable-languages=c,c++ \
--enable-shared \
--enable-threads=posix \
--enable-checking=release \
--with-system-zlib \
--enable-__cxa_atexit \
--disable-libunwind-exceptions
make -j$(nproc)
sudo make install
sudo ldconfig
验证:
bash
gcc --version
g++ --version
注意:--prefix=/usr 会覆盖系统原有 gcc。若想保留旧版本,可改为 /usr/local。
1.2 make
一般电脑都会存在,无需编译安装;
1.2.1 下载
make 4.2.1下载链接:
https://ftp.gnu.org/gnu/make/
1.2.2 编译安装 make
bash
tar -xf make-4.2.1.tar.gz
cd make-4.2.1
./configure --prefix=/usr
make -j$(nproc)
sudo make install
验证:
bash
make --version
1.3 pkg-config
一般电脑都会存在,无需编译安装;
1.3.1 下载
pkg-config 0.29.2下载链接:
https://pkg-config.freedesktop.org/releases/
1.3.2 编译安装 pkg-config
pkg-config 依赖 glib(但 glib 通常系统已有),若系统有 glib 则可直接编译。
bash
tar -xf pkg-config-0.29.2.tar.gz
cd pkg-config-0.29.2
./configure --prefix=/usr --with-internal-glib
make -j$(nproc)
sudo make install
--with-internal-glib 会使用内置的 glib 副本,避免依赖系统 glib。若不使用该选项,则需确保系统有 glib 开发包。
验证:
bash
pkg-config --version
2.安装依赖
编译QT需要很多其它依赖,所以需要一个一个安装;
2.1 安装zlib
zlib 下载链接:
http://www.zlib.net/
bash
tar -xvf zlib-1.3.1.tar.gz
cd zlib-1.3.1
./configure --prefix=/usr
make
sudo make install
sudo ldconfig
2.2 安装xcb-proto
xcb-proto 下载链接:
https://xcb.freedesktop.org/dist/
bash
tar -xvf xcb-proto-1.13.tar.gz
cd xcb-proto
./configure --prefix=/usr
make
sudo make install
sudo ldconfig
pkg-config --modversion xcb-proto
2.3 安装xcb-xkb
xcb-xkb 下载链接:
https://xcb.freedesktop.org/dist/
bash
tar -xvf xcb-util-xkb-0.4.0.tar.gz
cd xcb-util-xkb-0.4.0
./configure --prefix=/usr
make
sudo make install
sudo ldconfig
pkg-config --modversion xcb-xkb
2.4 安装renderproto
renderproto 下载链接:
https://www.x.org/releases/individual/proto/
获取新的 config.sub 和 config.guess
https://git.savannah.gnu.org/cgit/config.git/plain/
为什么要下载config.sub 和 config.guess,因为需要适配renderproto的原因!
可以直接下载:
bash
wget https://git.savannah.gnu.org/cgit/config.git/plain/config.sub
wget https://git.savannah.gnu.org/cgit/config.git/plain/config.guess
将这两个文件复制到目标机器的 renderproto-0.11.1 目录下,覆盖原有文件。
bash
tar -xzf renderproto-0.11.1.tar.gz
cd renderproto-0.11.1
确定系统架构:
bash
uname -m
如果系统是 32 位 ARM,则用 --build=arm-linux-gnueabihf
如果系统是 64 位 ARM,则用 --build=aarch64-linux-gnu
配置安装路径:
bash
./configure --prefix=/usr --build=aarch64-linux-gnu
编译:
bash
make
如果报错:make: Notion to be done for 'all'. 直接进行下一步安装 make install 操作。
安装:
bash
sudo make install
sudo ldconfig
pkg-config --modversion renderproto
2.5 安装Xrender
Xrender 下载链接:
https://www.x.org/releases/individual/lib/
bash
tar -xzf libXrender-0.9.10.tar.gz
cd libXrender-0.9.10
./configure --prefix=/usr
make
sudo make install
sudo ldconfig
pkg-config --modversion xrender
2.6 安装randrproto
randrproto 下载链接:
https://www.x.org/releases/individual/proto/
bash
tar -xzf randrproto-1.5.0.tar.gz
cd randrproto-1.5.0
./configure --prefix=/usr
make
sudo make install
pkg-config --modversion randrproto
如果出现失败,请参考【2.4 安装renderproto】中的操作步骤。
2.7 安装libXrandr
libXrandr 下载链接:
https://www.x.org/releases/individual/lib/
bash
tar -xzf libXrandr-1.5.2.tar.gz
cd libXrandr-1.5.2
./configure --prefix=/usr
make
sudo make install
sudo ldconfig
pkg-config --modversion xrandr
2.8 安装libxcb
libxcb 下载链接:
https://xcb.freedesktop.org/dist/
bash
tar -xvf libxcb-1.13.tar.gz
cd libxcb
./configure --prefix=/usr
make
sudo make install
sudo ldconfig
pkg-config --modversion xcb
2.9 安装Python
Python 下载链接:
https://www.python.org/ftp/python/
bash
tar -xvf Python-3.8.10.tar.xz
cd Python-3.8.10
./configure --prefix=/usr/local --enable-optimizations # 配置(安装到 /usr/local,不影响系统 Python 2.7) - 如果系统没有,则可以使用/usr 路径
make -j4
sudo make install
# 验证安装
/usr/local/bin/python3 --version
# 创建软链接,使 python3 命令可用
sudo ln -s /usr/local/bin/python3 /usr/bin/python3
2.10 安装Ninja
Ninja 下载链接:
https://github.com/ninja-build/ninja/
我是使用命令下载:wget https://github.com/ninja-build/ninja/archive/refs/tags/v1.12.1.tar.gz
bash
tar -xzf v1.12.1.tar.gz
cd ninja-1.12.1
# 编译(核心命令)
./configure.py --bootstrap
# 复制到 /usr/bin 目录
sudo cp ninja /usr/bin/
# 赋予执行权限
sudo chmod +x /usr/bin/ninja
# 验证安装
ninja --version
2.11 安装Meson
Meson 下载链接:
https://github.com/mesonbuild/meson/
我是使用命令下载:wget https://github.com/mesonbuild/meson/archive/refs/tags/1.5.0.tar.gz
bash
tar -xzf 1.5.0.tar.gz
cd meson-1.5.0
# 直接运行(测试是否正常)
python3 meson.py --version
# 添加别名到 ~/.bashrc
echo "alias meson='python3 /path/to/meson-1.5.0/meson.py'" >> ~/.bashrc
source ~/.bashrc
meson --version
# 可以将meson.py拷贝到/usr/local/bin路径,然后再添加到~/.bashrc
2.12 安装bison
bison 下载链接:
https://ftp.gnu.org/gnu/bison/
bash
tar -xvf bison-3.8.2.tar.xz
cd bison-3.8.2
# 配置(安装到 /usr/local,避免覆盖系统 bison) - 如果系统没有,则可以使用/usr 路径
./configure --prefix=/usr/local
# 编译(使用多核)
make -j$(nproc)
# 安装(需要 root 权限)
sudo make install
echo 'export PATH=/usr/local/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
bison --version
2.13 安装libxml2
libxml2 下载链接:
http://xmlsoft.org/sources/
我是使用命令下载:wget https://download.gnome.org/sources/libxml2/2.9/libxml2-2.9.14.tar.xz
bash
tar -xvf libxml2-2.9.14.tar.xz
cd libxml2-2.9.14
./configure --prefix=/usr
make -j$(nproc)
sudo make install
# 更新动态链接库缓存
sudo ldconfig
# 检查 pkg-config 是否能找到
pkg-config --modversion libxml-2.0
2.14 安装libxkbcommon
libxkbcommon 下载链接:
https://github.com/xkbcommon/libxkbcommon/releases
bash
cd libxkbcommon-master
# 运行配置命令
meson setup build --prefix=/usr --buildtype=release -Denable-x11=true -Denable-wayland=false -Denable-docs=false
# 编译
ninja -C build
# 安装
sudo ninja -C build install
# 更新库缓存
sudo ldconfig
2.15 检查
检查是否都已经安装,缺一不可
bash
pkg-config --modversion xcb
pkg-config --modversion x11
pkg-config --modversion xext
pkg-config --modversion xrender
pkg-config --modversion xrandr
到了这一步,QT应该是可以正常编译安装了的;
但是可能会没有音视频相关功能,例如读取摄像头显示画面等;
可以参考如下第3步骤进行安装相关的库,但不保证可行;
3.音视频相关
3.1 安装ALSA 库
ALSA 下载链接:
https://www.alsa-project.org/files/pub/lib/
bash
tar -xjf alsa-lib-1.2.10.tar.bz2
cd alsa-lib-1.2.10
./configure --prefix=/usr
make
sudo make install
sudo ldconfig
pkg-config --modversion alsa
# 应输出 1.2.10
3.2 GStreamer 核心组件
注意: 如果你的系统已经安装了 GLib(可通过 pkg-config --modversion glib-2.0 检查),则可以跳过 GLib 的编译,直接编译 GStreamer。(即从第4步开始)
本教程电脑存在GLib,但是也尝试从步骤1开始,安装到步骤3时编译失败,缺少依赖,遂跳过安装,直接从第4步骤开始。
3.2.1 安装libffi
libffi 下载链接:(GLib 的依赖)
https://github.com/libffi/libffi/releases/
我是直接输入链接下载:https://github.com/libffi/libffi/releases/download/v3.4.4/libffi-3.4.4.tar.gz
bash
tar -xzf libffi-3.4.4.tar.gz
cd libffi-3.4.4
./configure --prefix=/usr
make
sudo make install
3.2.2 安装gettext
libffi 下载链接:(GLib 国际化支持(可选,但建议))
https://ftp.gnu.org/gnu/gettext/
bash
tar -xJf gettext-0.21.1.tar.xz
cd gettext-0.21.1
./configure --prefix=/usr
make
sudo make install
3.2.3 安装GLib
GLib 下载链接:(GStreamer 的核心依赖,提供对象系统)
https://download.gnome.org/sources/glib/
我是直接输入链接下载:https://download.gnome.org/sources/glib/2.74/glib-2.74.6.tar.xz
bash
tar -xJf glib-2.74.6.tar.xz
cd glib-2.74.6
meson setup build --prefix=/usr
ninja -C build
sudo ninja -C build install
sudo ldconfig
如果遇到 meson 报错(如需要 libmount),你可能需要先安装 libmount-dev(可从离线包安装)或使用 -Dlibmount=disabled 等选项。或者下载别的版本尝试。
GLib 的编译比较复杂,若系统已有 GLib,建议跳过这一步。
3.2.4 安装gstreamer
gstreamer 下载链接:
https://gstreamer.freedesktop.org/src/gstreamer/
bash
tar -xJf gstreamer-1.16.3.tar.xz
cd gstreamer-1.16.3
meson setup build --prefix=/usr
ninja -C build
sudo ninja -C build install
sudo ldconfig
3.2.5 安装gst-plugins-base
gst-plugins-base 下载链接:
https://gstreamer.freedesktop.org/src/gst-plugins-base/
bash
tar -xJf gst-plugins-base-1.16.3.tar.xz
cd gst-plugins-base-1.16.3
meson setup build --prefix=/usr -Dalsa=enabled
ninja -C build
sudo ninja -C build install
sudo ldconfig
3.2.6 安装Good Plugins
gst-plugins-base 下载链接:
https://gstreamer.freedesktop.org/src/gst-plugins-good/
bash
tar -xJf gst-plugins-good-1.16.3.tar.xz
cd gst-plugins-good-1.16.3
meson setup build --prefix=/usr
ninja -C build
# 如果执行 ninja -C build 报错,
# meson setup build --prefix=/usr -Dqt5=disabled
# ninja -C build
# 没有报错执行安装
sudo ninja -C build install
sudo ldconfig
3.2.7 安装libv4l
libv4l 下载链接:
https://linuxtv.org/downloads/v4l-utils/
bash
tar -xjf v4l-utils-1.16.3.tar.bz2
cd v4l-utils-1.16.3
./configure --prefix=/usr
make
sudo make install
sudo ldconfig
如果make报错,那么只编译库即可:
bash
make -C lib
sudo make -C lib install
sudo ldconfig
查看版本:
bash
pkg-config --modversion libv4l2
3.2.8 验证 GStreamer 安装
bash
pkg-config --modversion gstreamer-1.0 # 应输出 1.16.3
pkg-config --modversion gstreamer-base-1.0 # 应输出 1.16.3
pkg-config --modversion gstreamer-audio-1.0 # 如果 base 插件编译成功,应输出 1.16.3
最后在QT configure 配置时输出中应该会显示:
bash
Qt Multimedia:
ALSA ........................ yes
GStreamer 1.0 ............... yes
Video for Linux ............. yes
4.Qt编译安装
4.1 设置环境变量
bash
# 设置 PKG_CONFIG_PATH 环境变量
echo 'export PKG_CONFIG_PATH=/usr/lib/aarch64-linux-gnu/pkgconfig:$PKG_CONFIG_PATH' >> ~/.bashrc
# 设置 GStreamer 插件路径
echo 'export GST_PLUGIN_PATH=/usr/lib/aarch64-linux-gnu/gstreamer-1.0' >> ~/.bashrc
source ~/.bashrc
4.2 编译安装
QT源码 下载链接:
https://download.qt.io/archive/qt/
bash
tar -xvf qt-everywhere-src-5.14.2.tar.xz
cd qt-everywhere-src-5.14.2
mkdir qt-build
cd qt-build
# 配置,注意替换自己需要安装的QT路径
../configure -prefix /home/QT/qt5.14.2/static -static -release -silent -skip qtwebengine -nomake tests -nomake examples -xcb -qt-zlib -qt-libpng -opensource -confirm-license
make -j$(($(nproc)-1)) # 表示使用所有CPU核心 - 1 进行编译,可以大大加快速度
make install
参数介绍:
| 参数 | 功能描述 | 必要性 | 注意事项 |
|---|---|---|---|
| -prefix /home/QT/qt5.14.2/static | 指定Qt安装目录 | 必需 | 路径需提前创建,权限设为chmod 755 |
| -static | 启用静态链接模式 | 必需 | 生成不依赖系统库的二进制文件,但体积较大 |
| -release | 编译为发布模式(无调试信息) | 推荐 | 相比-debug节省30%+空间,适合生产环境 |
| -silent | 静默模式(减少编译输出日志) | 可选 | 加速编译过程,但报错时需检查日志文件 |
| -skip qtwebengine | 跳过WebEngine模块编译 | ARM必需 | WebEngine静态编译在ARM平台不支持,强行启用会导致失败 |
| -nomake tests | 不编译测试套件 | 推荐 | 节省50%+编译时间 |
| -nomake examples | 不编译示例代码 | 推荐 | 减少无关资源占用 |
| -xcb | 强制启用XCB图形后端 | 麒麟系统必需 | 麒麟系统依赖X11协议,缺失会导致GUI应用无法启动 |
| -qt-zlib | 使用Qt内置zlib库(替代系统libz.so) | 依赖规避必需 | 避免ARM架构下系统库版本冲突 |
| -qt-libpng | 使用Qt内置libpng库(替代系统libpng.so) | 依赖规避必需 | 同上,确保图像处理功能稳定 |
| -opensource | 声明使用开源版本 | 协议相关 | 与-commercial二选一 |
| -confirm-license | 自动确认许可证协议 | 防中断必需 | 避免编译过程暂停等待用户输入 |
4.3 配置QT环境变量
bash
sudo vim ~/.bashrc
shift+g # 跳到最后一行
o # 进入编辑模式
# 即在.bashrc文件的最后添加如下内容:
# 在最后面添加 - 注意替换自己的QT编译路径
export PATH=/home/QT/qt5.14.2/static/bin:$PATH
export QT_PLUGIN_PATH=/home/QT/qt5.14.2/static/plugins:$QT_PLUGIN_PATH
export QML2_IMPORT_PATH=/home/QT/qt5.14.2/static/qml:$QML2_IMPORT_PATH
export LD_LIBRARY_PATH=/home/QT/qt5.14.2/static/lib:$LD_LIBRARY_PATH
# 字体相关
export QT_QPA_FONTDIR=/usr/share/fonts:/usr/local/share/fonts:$HOME/.local/share/fonts:$HOME/.fonts
# 按ESC键 再按Shift+;
# 输入wq 按回车
source ~/.bashrc
# (检查qmake版本)
qmake -v
5.QtCreator编译安装
QT源码 下载链接:
https://download.qt.io/official_releases/qtcreator/
选择适合自己的版本进行安装。
bash
tar -xvf qt-creator-opensource-src-11.0.1.tar.xz
cd qt-creator-opensource-src-11.0.1
qmake -r
make
make install
最后安装完成后在终端下面输入qtcreator可以直接打开安装好的QtCreator
6.配置qmake
6.1 打开QtCreator的设置
启动QtCreator,点击菜单栏 工具 -> 选项。

6.2 添加新的Qt版本
- 在左侧列表中选择 Kits(构建套件)。
- 切换到 Qt Versions(Qt版本)标签页。
- 点击右侧的 添加 按钮。

6.3 选择qmake路径
- 在弹出的文件对话框中,选择Qt静态编译的安装目录。
- 进入该目录下的
bin文件夹,选中qmake文件,点击 打开。
路径示例 (请替换为你的实际路径):
/home/QT/qt5.14.2/static/bin/qmake
6.4 验证添加结果
添加成功后,列表中会出现一个新的Qt版本,名称默认为qmake的路径。QtCreator会自动检测其版本号为5.14.2。点击 Apply。
6.5 克隆或创建新的构建套件
- 在 Kits 设置页面,切换到 构建套件 标签页。
- 为了保留原来的动态编译环境,选中你正在使用的默认套件(如"Desktop Qt 5.14.2 GCC 64bit"),点击 克隆 。(或者点击添加)
- 克隆后会生成一个名为"克隆自..."的新套件。重命名为便于识别的名称,例如 Desktop Qt 5.14.2 Static。
6.6 配置新的构建套件
- 选中你刚刚克隆/创建的套件。
- 在右侧详情面板中,找到 Qt 版本 下拉菜单,选择你在第4步中添加的那个静态编译的Qt版本(如"Qt 5.14.2 (static)")。
- 确认编译器 :确保 C编译器 、C++编译器 和 调试器 的配置与你的静态编译环境一致(通常是系统自带的GCC,例如
/usr/bin/gcc和/usr/bin/g++)。如果不确定,可以参考原有套件的配置。 - 点击 OK 关闭选项窗口。

至此,QtCreator内部配置完成。新建项目时,在"构建套件"选择步骤中,勾选你刚刚创建的 Desktop Qt 5.14.2 Static 套件即可进行静态编译。
6.字体
有点遗憾,在构建QT时,没有设置好字体相关,导致编译出来的QT只会在编译路径的/lib/fonts/路径下寻找字体;(/home/QT/qt5.14.2/static/lib/fonts)
所以在设置环境变量时,加上了字体搜寻路径 :export QT_QPA_FONTDIR=/usr/share/fonts:/usr/local/share/fonts:$HOME/.local/share/fonts:$HOME/.fonts
如果编译出来的QT程序还是无法显示字体,则需要手动下载字体拷贝到/lib/fonts/路径中;
6.1 导入字体
新建字体文件夹,请替换自己的QT路径
bash
mkdir -p /home/QT/qt5.14.2/static/lib/fonts
6.1.1 中文字体
文泉驿微米黑: https://sourceforge.net/projects/wqy/files/wqy-microhei/0.2.0-beta/wqy-microhei-0.2.0-beta.tar.gz
如果文泉驿微米黑下载速度很慢,可以使用如下思源字体;
思源字体: https://gitcode.com/open-source-toolkit/e6cc1/
bash
cp *.otf /home/QT/qt5.14.2/static/lib/fonts/
6.1.2 英文字体
DejaVu 字体:wget https://github.com/dejavu-fonts/dejavu-fonts/releases/download/version_2_37/dejavu-fonts-ttf-2.37.tar.bz2
bash
tar -xjf dejavu-fonts-ttf-2.37.tar.bz2
cp dejavu-fonts-ttf-2.37/ttf/* /home/QT/qt5.14.2/static/lib/fonts/
6.2 代码层面导入字体
另外, 编译的程序拷贝到别的电脑中运行,也是无法显示文本的,因为无法找到路径字体;
所以需要在代码中,添加资源文件,添加字体,在代码中初始化字体库即可。
6.2.1 资源文件
首先在项目中添加资源文件,并且将字体包含进去;
然后在mian.cpp文件中添加如下代码:
cpp
#include <QFontDatabase>
// 从资源加载字体
int fontId = QFontDatabase::addApplicationFont(":/fonts/SourceHanSansSC-Regular.otf");
if (fontId != -1) {
QString fontFamily = QFontDatabase::applicationFontFamilies(fontId).at(0);
QFont font(fontFamily);
font.setPointSize(12);
a.setFont(font);
} else {
// 回退:如果加载失败,使用系统默认字体(但仍可能无中文)
qDebug() << "Failed to load font from resources";
}
6.2.1 使用系统自带的字体
针对Linux环境,可以使用系统自带的字体;
在main.cpp中添加如下代码:
cpp
#include <QString>
#include <QList>
#include <QPair>
#include <QDir>
#include <QFontDatabase>
QList<QPair<QString,QString>> g_FolderPath;
QStringList findFile(QString path)
{
// 获取所有文件夹名
QDir dir(path);
path = dir.fromNativeSeparators(path);// "\\"转为"/"
QStringList allFile = QStringList("");
dir.setFilter(QDir::Files);
dir.setSorting(QDir::Name);
allFile = dir.entryList();
return allFile;
}
QStringList findFolder(QString folder)
{
// 获取所有文件夹名
QDir dir(folder);
folder = dir.fromNativeSeparators(folder);// "\\"转为"/"
QStringList allFolder = QStringList("");
dir.setFilter(QDir::Dirs | QDir::NoDotAndDotDot);
dir.setSorting(QDir::Name);
allFolder = dir.entryList();
return allFolder;
}
void findAllFiles(QString folder)
{
//添加当前路径下所有的文件
QStringList Files =findFile(folder);
for(int i=0; i<Files.size(); i++)
{
g_FolderPath.append(QPair<QString,QString>(folder,Files.at(i)));
}
// 获取所有文件夹名
QStringList Folder = findFolder(folder); //根目录下的子文件夹
//遍历子文件夹 获取里面的文件和文件夹
for (int i = 0; i < Folder.size(); ++i)
{
findAllFiles(folder+"/"+Folder[i]);
}
}
#ifdef Q_OS_UNIX
findAllFiles("/usr/share/fonts");
for(int i=0;i<g_FolderPath.size();i++){
if(g_FolderPath.at(i).second.contains(".ttf")){
QFontDatabase::addApplicationFont(g_FolderPath.at(i).first+"/"+g_FolderPath.at(i).second);
}
}
#endif
到此,重新编译程序,应该可以正常显示字体文本了。
7.总结
如上是源码静态编译QT的全流程,可以作为参考,每天电脑的系统、CPU等都不一样,具体问题根据具体情况自行百度或AI解决!
另外,如果编译QT程序耗时长,且一直在报告警,无法编译完成,如下图:

原因: 系统的本地时间错乱!
解决方案: 矫正系统时间,sudo date -s "2026-03-24 14:30:00" # 替换为当前实际时间
完!