银河麒麟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

在这里插入图片描述



矫正系统时间:sudo date -s "2026-03-24 14:30:00" # 替换为当前实际时间
一定要校准电脑的时间跟网络时间差不多,否则编译会出问题,内网机踩过的坑!

所有依赖免费提供:https://download.csdn.net/download/cpp_learner/92772827

1.准备工作

编译QT需要gcc、g++、make、pkg-config;所以需要查看系统是否已存在,否则需要自行安装;
通过如下命令查看系统是否已存在相关依赖:

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/

依赖库推荐版本下载链接
GMP6.3.0https://ftp.gnu.org/gnu/gmp/
MPFR4.2.1https://ftp.gnu.org/gnu/mpfr/
MPC1.3.1https://ftp.gnu.org/gnu/mpc/
ISL0.26https://libisl.sourceforge.io/

1.1.2 解压并准备

gcc 编译时需要 gmp、mpfr、mpc(以及可选的 isl)。推荐将这三个依赖放在 gcc 源码目录内一起编译,避免额外配置。

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 编译安装

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

验证:

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

tar -xf make-4.2.1.tar.gz
cd make-4.2.1
./configure --prefix=/usr
make -j$(nproc)
sudo make install

验证:

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 则可直接编译。

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 开发包。

验证:

pkg-config --version

2.安装依赖

编译QT需要很多其它依赖,所以需要一个一个安装;

2.1 安装zlib

zlib 下载链接:
http://www.zlib.net/

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/

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/

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的原因!
可以直接下载:

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 目录下,覆盖原有文件。

tar -xzf renderproto-0.11.1.tar.gz
cd renderproto-0.11.1

确定系统架构:

uname -m

如果系统是 32 位 ARM,则用 --build=arm-linux-gnueabihf
如果系统是 64 位 ARM,则用 --build=aarch64-linux-gnu

配置安装路径:

./configure  --prefix=/usr  --build=aarch64-linux-gnu

编译:

make

如果报错:make: Notion to be done for ‘all’. 直接进行下一步安装 make install 操作。

安装:

sudo make install

sudo ldconfig
pkg-config --modversion renderproto

2.5 安装Xrender

Xrender 下载链接:
https://www.x.org/releases/individual/lib/

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/

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/

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/

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/

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

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

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/

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

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

建议先看下面新增的 “① 2026/06/15新增” ,尝试静态编译,路径使用“–prefix=/usr”;

libxkbcommon 下载链接:
https://github.com/xkbcommon/libxkbcommon/releases

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 检查

检查是否都已经安装,缺一不可

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/

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

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/

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

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/

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/

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/

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/

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报错,那么只编译库即可:

make -C lib
sudo make -C lib install
sudo ldconfig

查看版本:

pkg-config --modversion libv4l2

3.2.8 验证 GStreamer 安装

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 配置时输出中应该会显示:

Qt Multimedia:
  ALSA ........................ yes
  GStreamer 1.0 ............... yes
  Video for Linux ............. yes

4.Qt编译安装

4.1 设置环境变量

# 设置 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/

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环境变量

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/
选择适合自己的版本进行安装。

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路径

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/

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

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文件中添加如下代码:

#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中添加如下代码:

#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

到此,重新编译程序,应该可以正常显示字体文本了。


① 2026/06/15新增

QT程序编译好后,将编译出来的可执行程序拷贝到一台比较干净的电脑上测试运行,发现缺少依赖库:“error while loading shared libraries: libxkbcommon-x11.so.0: cannot open shared object file: No such file or directory”

解决方案:
需要将 libxkbcommon 库进行静态编译;

新的编译步骤:

// 重新下载 https://github.com/xkbcommon/libxkbcommon/releases
cd libxkbcommon-master

# 清理旧的构建目录(如果存在)
rm -rf build

# 配置为静态库、release 模式、启用 X11 支持
# 注意:/tmp/xkb_static/usr 设置为自己的路径
meson setup build \
  --prefix=/tmp/xkb_static/usr \
  --buildtype=release \
  -Ddefault_library=static \
  -Denable-x11=true \
  -Denable-wayland=false \
  -Denable-docs=false

# 编译
ninja -C build

# 安装到 /tmp/xkb_static/usr
ninja -C build install

执行完后,静态库会出现在:

  • /tmp/xkb_static/usr/lib64/libxkbcommon.a
  • /tmp/xkb_static/usr/lib64/libxkbcommon-x11.a

同时头文件在 /tmp/xkb_static/usr/include/

之后,在 .pro 文件中添加:

# 静态链接 libxkbcommon 和 libxkbcommon-x11
LIBS += -L/tmp/xkb_static/usr/lib64 -Wl,-Bstatic -lxkbcommon -lxkbcommon-x11 -Wl,-Bdynamic

然后重新运行 qmake 并编译。

最后将编译出来的可执行程序拷贝到目标电脑上进行测试!


7.总结

如上是源码静态编译QT的全流程,可以作为参考,每台电脑的系统、CPU等都不一样,具体问题根据具体情况自行百度或AI解决!

另外,如果编译QT程序耗时长,且一直在报告警,无法编译完成,如下图:
在这里插入图片描述
原因: 系统的本地时间错乱!
解决方案: 矫正系统时间,sudo date -s "2026-03-24 14:30:00" # 替换为当前实际时间

完!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cpp_learners

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值