银河麒麟V10+飞腾FT-2000/4处理器+QT源码静态编译5.14.2指南

最近被领导安排一项工作任务,在一台比较老的麒麟系统中搭建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" # 替换为当前实际时间

完!

相关推荐
野生技术架构师2 小时前
1000道互联网大厂Java岗面试原题解析(八股原理+场景题)
java·开发语言·面试
qqty12172 小时前
Java进阶学习之路
java·开发语言·学习
gCode Teacher 格码致知2 小时前
Javascript提高:get和post等请求,对于汉字和空格信息进行编码的原则-由Deepseek产生
开发语言·前端·javascript·node.js·jquery
黑眼圈子2 小时前
总结一下用Java做算法的常用类和方法
java·开发语言·算法
码界筑梦坊3 小时前
353-基于Python的大湾区气候数据可视化分析系统
开发语言·python·信息可视化·数据分析·django·vue·毕业设计
GIS阵地3 小时前
QgsProviderMetadata 详解(基于 QGIS 3.40.13 API)
数据库·qt·arcgis·oracle·gis·开源软件·qgis
c++逐梦人3 小时前
C++11——— 包装器
开发语言·c++
zihao_tom4 小时前
Go环境搭建(vscode调试)
开发语言·vscode·golang
IT方大同4 小时前
(实时操作系统)线程管理
c语言·开发语言·嵌入式硬件