☰
银河麒麟V10源码编译QT6.0与Fcitx5中文输入法配置指南
2026/9/29 2:16:21 网站建设 项目流程

直接切入正题。国产系统这两年装机量上去了,但“装好系统只是开始,能用起来才是真本事”这句话,在银河麒麟V10上体现得淋漓尽致。很多人装完系统第一件事就卡住了:中文输入法调不出来,QT开发环境里打不了汉字。更别提想把QT6.0跑起来,还要面对一堆依赖和编译问题。这篇文章我就把银河麒麟V10 + QT6.0 + 中文输入法这套环境从零到一完整过一遍,重点讲清楚每一步为什么这么做,以及我在实际部署中踩过的坑和最终采用的稳定方案。

这套方案很明确:银河麒麟V10桌面系统,适配QT6.0开发环境,集成Fcitx5中文输入法,并采用国内镜像加速解决软件下载慢、依赖缺失的问题。适合在国产化替代项目中做应用开发的同学,也适合刚接触麒麟系统、被输入法问题劝退的新手参考。

1. 环境梳理与搭建思路

先把整个任务拆开看,这里实际包含了三个独立又互相依赖的子任务。

1.1 银河麒麟V10的系统版本识别

银河麒麟V10看似一个版本,实际分桌面版和服务器版,桌面版还继续区分为SP1、SP2等更新批次。不同的版本号对应不同的底层架构和软件仓库策略,直接影响后续的安装命令。

我在实操中用到的版本是银河麒麟桌面操作系统V10 SP1,内核版本5.10.0系列,CPU架构为x86_64。确认方式很简单:

# 查看系统版本 cat /etc/kylin-release # 查看内核版本 uname -a # 查看CPU架构 lscpu | grep Architecture

为什么要确认这个?因为麒麟的软件源配置跟版本强相关,SP1和SP2的源地址有细微差别。如果你在网上下载的教程命令不适用于当前版本,第一步就可能出现apt update报错的情况。另外,ARM架构(比如飞腾、鲲鹏处理器)和x86架构的软件包是不通用的,后面装的QT6.0也从源码编译,架构选错直接编不过。

1.2 QT6.0的获取方式与QT5的区别

很多人第一个问题是:为什么非要用QT6.0?麒麟软件商店里默认的Qt Creator版本太老,而麒麟系统本身的兼容层又偏向QT5。实际项目中如果目标是开发适配国产化的新应用,用QT6.0的价值在于它更现代的信号槽语法、更好的高DPI支持、以及C++17的全面拥抱。

但老项目迁移QT6确实有成本,不少模块从QRegExp换成QRegularExpression,QTextCodec被移除等等。所以我的建议是:如果项目是全新的,直接上QT6.0没问题;如果是老项目,先评估依赖库的兼容性。

QT6.0的安装方式主要有三种:离线安装包、在线安装器、源码编译。麒麟V10默认软件源里是没有QT6.0的,用在线安装器又会因为网络问题失败率高,所以本文主推源码编译安装。这个方式最稳,也能确保跟麒麟V10的glibc库完全兼容。

1.3 中文输入法的选型逻辑

Linux下的中文输入法框架基本就是IBus和Fcitx两大派系,麒麟桌面默认集成的是IBus。但为什么很多人在麒麟上装完输入法,打开Qt Creator却依然打不了字?

核心原因是:Qt Creator用的是它自己打包的一套Qt库,跟系统默认输入法框架的对接存在断层。Qt程序默认只认QT_IM_MODULE这个环境变量指定的输入法模块。如果不给Qt程序指定输入法模型,它在启动时就检测不到任何可用的中文输入法。

IBus在Qt5程序上偶尔也会掉链子,相比之下Fcitx5对Qt的支持更主动,自带fcitx5-qt模块,专门解决Qt应用无法调用输入法的问题。所以我最终选择了Fcitx5方案,并且把QT_IM_MODULE等环境变量固化到系统级别,确保无论是系统应用还是QT程序都能正确调用中文输入。

这里插入一个观点:不要迷信“装个输入法就能用”,在Linux上输入法能不能被某个应用识别,取决于几件事:输入法框架是否运行、应用是否链接了对应的输入法模块、环境变量是否指向正确。三步缺一不可。

2. 基础准备与镜像加速配置

这步是全文性价比最高的十分钟,做完之后你后面的每一步都会快很多。麒麟V10的源默认可能指向官方服务器,在国内网络环境下速度不稳定,直接影响apt install的效率。

2.1 麒麟V10的软件源替换为国内镜像

首先备份源文件,这是Linux操作的基本素养:

sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup sudo cp -r /etc/apt/sources.list.d /etc/apt/sources.list.d.backup

然后用编辑器打开/etc/apt/sources.list,把里面的源地址前缀替换为国内镜像地址。以清华镜像源为例:

deb https://mirrors.tuna.tsinghua.edu.cn/kylin/KYLIN-10-SP1 10.1 main restricted universe multiverse

注意:源地址里的KYLIN-10-SP1要和系统版本对应,SP2系统就把SP1改成SP2。替换后运行:

sudo apt update

如果一切正常,你会发现更新速度明显提升。如果遇到Certificate verification failed之类的报错,多半是证书问题,可以用http://临时代替https://,但后续安装第三方软件时还是建议修复证书链。

2.2 pip与npm等开发工具的加速配置

除了apt源,后续QT编译过程可能需要Python辅助脚本,Qt Creator的插件安装也可能用到npm。顺手把pip和npm都配置成国内镜像,省得中途卡住。

pip配置:

mkdir -p ~/.pip cat > ~/.pip/pip.conf << EOF [global] index-url = https://pypi.tuna.tsinghua.edu.cn/simple trusted-host = pypi.tuna.tsinghua.edu.cn EOF

npm配置(如果系统装了nodejs):

npm config set registry https://registry.npmmirror.com

2.3 系统基础软件包的安装

QT6.0源码编译对构建工具和依赖库的要求比较高,先把基础工具链装齐:

sudo apt update sudo apt install -y build-essential libgl1-mesa-dev libfontconfig1-dev \ libfreetype6-dev libx11-dev libx11-xcb-dev libxext-dev libxi-dev \ libxrender-dev libxkbcommon-dev libxkbcommon-x11-dev libxcb-* \ libegl1-mesa-dev libgles2-mesa-dev libcurl4-openssl-dev \ libclang-dev libstdc++-12-dev

注意libxcb-*这个通配符会匹配大量xcb相关库,这些是Qt底层的窗口系统通信协议库,缺一个都可能在后面编译xf86vidmode等模块时报错。有强迫症的同学可以不用通配符,一个个列出来。

顺手再装一个gdb和cmake,后面排查问题可能用得到:

sudo apt install -y gdb cmake

3. 中文输入法环境搭建

输入法看着简单,实际操作中90%的环境问题都出在这一步。我先说结论:麒麟V10上装Fcitx5,然后设置好环境变量,并确保Qt程序能找到它。

3.1 安装Fcitx5输入法框架及中文引擎

麒麟V10的源里已经带了Fcitx5相关包,直接安装:

sudo apt install -y fcitx5 fcitx5-chinese-addons fcitx5-config-qt

fcitx5-chinese-addons是中文输入的核心扩展包,包含了拼音、双拼、五笔等输入引擎,还有词库。fcitx5-config-qt是图形化配置界面,必装,后面调整快捷键、候选词个数都要用它。

安装完成后先别急着启动,把自动启动配置加上。在/etc/xdg/autostart/下建立一个fcitx5.desktop文件:

[Desktop Entry] Type=Application Name=Fcitx5 Exec=fcitx5 X-GNOME-Autostart-enabled=true

如果文件已存在,确认Exec=行是fcitx5而不是fcitx4或ibus-daemon。

3.2 设置环境变量与输入法切换快捷键

这是整个配置里最重要的一步,也是容易被忽略的一步。在/etc/environment文件末尾追加以下内容:

GTK_IM_MODULE=fcitx QT_IM_MODULE=fcitx XMODIFIERS=@im=fcitx SDL_IM_MODULE=fcitx GLFW_IM_MODULE=ibus

稍微解释一下每个变量的作用:

  • GTK_IM_MODULE:GTK程序(大多数Linux桌面应用)的输入法模块。
  • QT_IM_MODULE:Qt程序(包括Qt Creator和所有用Qt开发的应用)的输入法模块,设为fcitx后,程序启动时就会去加载Fcitx5的Qt插件。
  • XMODIFIERS:X11窗口系统下的全局输入法标识,用于接管X应用里的输入焦点。
  • SDL_IM_MODULE:游戏和多媒体框架SDL的输入法模块,如果不用SDL可以不设。
  • GLFW_IM_MODULE:OpenGL窗口库GLFW的输入法模块。这里为什么要设成ibus?实测下来,Fcitx5对GLFW的原生支持还不够稳定,用ibus协议反而能正确弹出候选框。

改完环境变量后,一定记得注销当前用户或重启系统,让变量生效到桌面环境的整个会话。很多人改了/etc/environment后直接开Qt Creator发现还是没输入法,就是因为环境变量没有重新加载。

3.3 验证中文输入是否正常

重启后打开任意文本编辑器(比如系统自带的文本编辑器,或QT程序示例里的Text Editor),按Ctrl+Space看能否唤出输入法候选词。

如果发现系统自带的GTK程序(如Firefox、LibreOffice)能正常输中文,但Qt Creator不行,那就是Qt程序的输入法插件没链接上,后面会说到解决办法。

4. QT6.0源码编译安装全流程

这节是整个任务的硬骨头。麒麟V10的软件仓库里没有现成的QT6.0包,安装QT6.0最可靠的方式是源码编译,过程比较长,但是一次编译,长期受益。

4.1 下载QT6.0源码并做完整性校验

QT官方源码包可以从国内镜像获取,速度比官方源快很多:

wget https://mirrors.ustc.edu.cn/qtproject/archive/qt/6.0/6.0.0/submodules/qtbase-everywhere-src-6.0.0.zip

注意:这里只下载qtbase这一个模块源码,因为它是Qt的核心模块,包含QtCore、QtGui、QtWidgets等最基础的部分。完整版的Qt6源码体积巨大,编译时间很长。如果没有特殊需求(比如开发Qt Quick/QML应用),只编qtbase完全够日常C++开发用了。

如果担心包里缺组件,可以在同目录下把qtsvg(SVG图标支持)也下载下来,这个体积小、编译快,实际项目中经常用到。

源码下载完成后解压:

unzip qtbase-everywhere-src-6.0.0.zip cd qtbase-everywhere-src-6.0.0/

4.2 configure配置的关键参数选择

在编译前需要先配置Qt的构建参数。进入源码目录后,执行:

mkdir -p build cd build ../configure -prefix /opt/Qt6.0.0 -release -opensource -confirm-license \ -nomake examples -nomake tests -skip qtdeclarative -skip qtquickcontrols2 \ -no-opengl

这里每个参数都有讲究,我逐个说明:

  • -prefix /opt/Qt6.0.0:指定Qt的安装路径,之后qmake、头文件、库文件都会放这里。建议用/opt/Qt6.0.0而不是默认的/usr/local/Qt-6.0.0,路径简单好记。
  • -release:编译发布版本,体积小,运行快。如果需要用调试器断点调试Qt源码,就加-debug-and-release,但编译时间会成倍增加。
  • -opensource和-confirm-license:接受开源协议,免去交互确认。
  • -nomake examples和-nomake tests:不编译示例和测试代码,省时间。
  • -skip qtdeclarative:跳过QML模块。如果你确定用不到QML,这个参数能省很多时间。
  • -no-opengl:禁用OpenGL支持。麒麟V10的GPU驱动在不同硬件上表现不一,禁用它可以避免OpenGL相关编译错误。缺点是部分依赖硬件的渲染功能会受限,但普通窗口应用完全不受影响。

注意:如果你的机器GPU驱动稳定,或者你需要用Qt做OpenGL渲染,就不要加-no-opengl,改成-opengl desktop,让Qt链接到系统的OpenGL库。

4.3 编译与安装,以及耗时预估

configure阶段大概需要几分钟,中间会检查一堆依赖库是否存在。如果缺库,这里会直接报错并退出。遇到报错不要慌,按提示安装对应依赖,再重新执行configure。

configure通过后启动编译:

make -j$(nproc)

-j$(nproc)是让make并行编译,使用CPU全部核心数。举例来说:8核CPU就是make -j8,16核是make -j16。相信我,在QT编译这件事上,并行度就是生命线。

QT6.0的完整编译时间取决于CPU性能。我在一台8核16线程的机器上编译qtbase模块,大概花了25分钟左右。如果用4核老机器,做好等一小时的准备。期间屏幕上会不停刷编译日志,看到某个百分比卡住先别急,可能只是那个文件比较大。

编译完成后安装:

sudo make install

安装完成后检查一下:

/opt/Qt6.0.0/bin/qmake --version

如果输出类似QMake version 3.1 Using Qt version 6.0.0,说明安装成功。

4.4 配置qmake环境变量并测试QT程序

为了让系统能找到新装的Qt,在/etc/profile.d/qt6.0.sh里写入:

export PATH=/opt/Qt6.0.0/bin:$PATH export LD_LIBRARY_PATH=/opt/Qt6.0.0/lib:$LD_LIBRARY_PATH export PKG_CONFIG_PATH=/opt/Qt6.0.0/lib/pkgconfig:$PKG_CONFIG_PATH

保存后执行source /etc/profile.d/qt6.0.sh使其立即生效。注意:只改用户级的环境变量(比如~/.bashrc)的话,从桌面图标启动的Qt Creator可能不会读取用户级配置,所以放在/etc/profile.d/让所有用户和桌面会话都能读到。

然后创建一个最简单的Qt6程序测试编译和运行:

#include <QApplication> #include <QLabel> int main(int argc, char *argv[]) { QApplication app(argc, argv); QLabel label("银河麒麟V10 + QT6.0 环境搭建成功"); label.resize(400, 200); label.show(); return app.exec(); }
qmake -project qmake make ./test_qt6

如果窗口正常弹出,说明QT6.0编译安装成功。

5. Qt Creator的安装与输入法联动配置

有了Qt库还不够,开发时还需要一个顺手的IDE。Qt Creator是官方IDE,优先用源码库中配套的版本。

5.1 安装Qt Creator IDE

麒麟软件商店里可能有较老的Qt Creator版本,建议从Qt官方镜像下载与你Qt6.0.0匹配的Qt Creator:

wget https://mirrors.ustc.edu.cn/qtproject/official_releases/qtcreator/5.0/5.0.2/qt-creator-opensource-linux-x86_64-5.0.2.run chmod +x qt-creator-opensource-linux-x86_64-5.0.2.run ./qt-creator-opensource-linux-x86_64-5.0.2.run

安装过程中按向导走就行,建议安装路径设为/opt/qtcreator,方便后续找配置。如果界面是中文的更好,不是的话后面可以装中文语言包或在设置里切换。

装完之后,需要在Qt Creator中配置Qt版本和编译器。打开工具 -> 选项 -> Kits -> Qt Versions,点击添加,浏览到/opt/Qt6.0.0/bin/qmake,确认版本识别为6.0.0。然后在Compiler里确认gcc已被自动检测。最后在Kits里新建一个套件,把Qt版本、编译器、CMake都指定好。

注意:Qt Creator会检测系统的qmake命令。由于我们已经把/opt/Qt6.0.0/bin加入了PATH,理论上打开Qt Creator时就能自动识别。如果没识别到,手动指定路径也能解决。

5.2 解决Qt Creator中文输入法失效的问题

这是整个项目中最折磨人的环节。系统其他应用能打中文,Qt Creator里死活调不出输入法。原因多数是:从桌面启动的Qt Creator读取不到/etc/environment里的输入法变量,或者加载了自带Qt库导致输入法模块找不对位置。

解决方法是,修改Qt Creator的启动脚本,让它显式声明环境变量。找到Qt Creator安装目录下的qtcreator.sh(没有就创建同名脚本放桌面启动),在文件开头加入:

export GTK_IM_MODULE=fcitx export QT_IM_MODULE=fcitx export XMODIFIERS=@im=fcitx

同时,在Qt Creator的工具 -> 选项 -> 环境 -> 系统里,确认Locale设置为zh_CN。再把输入法切换快捷键Ctrl+Space也确认一下没有冲突。

如果这样还不行,那大概率是Qt Creator加载了自带Qt库,而Fcitx5的Qt插件只被安装到了系统Qt目录(即/opt/Qt6.0.0),此时需要把Fcitx5的Qt插件复制到Qt Creator的库目录。实际操作:

# 找到fcitx5的qt插件库 find /usr -name "libfcitx5platforminputcontextplugin.so" 2>/dev/null # 把找到的插件复制到Qt Creator的platforminputcontexts目录 sudo cp /usr/lib/*/qt5/plugins/platforminputcontexts/libfcitx5platforminputcontextplugin.so \ /opt/qtcreator/lib/Qt/plugins/platforminputcontexts/

复制完重启Qt Creator,中文输入法大概率就好了。

5.3 在Qt Creator中创建第一个QT6中文窗口项目

验证环境配置正确的最快捷方式,就是新建一个工程跑起来。打开Qt Creator:文件 -> 新建项目 -> Application -> Qt Widgets Application,项目名称自己取,保持类名默认,一路下一步即可。

在mainwindow.cpp里稍微加点内容:

#include "mainwindow.h" #include <QTextEdit> #include <QVBoxLayout> MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) { QWidget *central = new QWidget(this); QTextEdit *editor = new QTextEdit(central); QVBoxLayout *layout = new QVBoxLayout(central); layout->addWidget(editor); central->setLayout(layout); setCentralWidget(central); setWindowTitle(QStringLiteral("中文输入测试")); resize(800, 600); }

点左下角的绿色三角编译运行。在QTextEdit里按Ctrl+Space,如果出现拼音候选词,恭喜你,Qt6.0中文输入法环境的最后一环也算打通了。

6. 常见问题排查与实战经验

这部分我整理了高频问题和相应的解决方案,基本覆盖了搭建过程中90%的坑。

6.1 环境变量不生效

症状:改完/etc/environment后,重启系统输入法还是不能用。

原因:某些桌面环境不读/etc/environment,或者变量被系统配置覆盖。

排查步骤:

# 检查变量是否生效 echo $QT_IM_MODULE # 如果输出为空,说明变量没进会话

解决办法是检查~/.xprofile或~/.xinitrc,把环境变量也追加一份:

cat >> ~/.xprofile << EOF export GTK_IM_MODULE=fcitx export QT_IM_MODULE=fcitx export XMODIFIERS=@im=fcitx EOF

保存后重新登录即可。

6.2 Fcitx5启动了但输入法切换不出来

症状:面板看到Fcitx5在运行,但Ctrl+Space毫无反应。

原因:多半是当前窗口的输入法闸门没开,或者快捷键冲突。

排查步骤:

  • 右键Fcitx5托盘图标,进入配置 -> 全局选项 -> 热键,确认切换快捷键是Ctrl+Space,且没有和其他应用冲突。
  • 手动点击托盘图标切换输入法,排除快捷键本身的问题。
  • 在Fcitx5配置里添加上拼音输入法:配置 -> 输入法 -> 添加输入法 -> 拼音。很多时候装完fcitx5-chinese-addons后,输入法列表是空的,你不会主动添加,自然不能切换。

6.3 QT编译失败和缺依赖

症状:configure阶段遇到Could not find libxkbcommon之类的错误。

原因:缺了对应的依赖开发包。

排查步骤:大多数情况都能通过apt安装依赖解决:

sudo apt install libxkbcommon-dev libxkbcommon-x11-dev sudo apt install libxcb-xinerama0-dev libxcb-icccm4-dev libxcb-image0-dev sudo apt install libxcb-keysyms1-dev libxcb-randr0-dev libxcb-render-util0-dev

装完依赖后,重新执行configure即可。这里有个细节:configure失败后会生成一个config.log文件,里面记录了详细的失败原因。与其去网上盲搜,不如先看这个文件。

6.4 Qt Creator用不了中文

症状:系统其他程序能正常中文,Qt Creator不行。

原因:前文提过的环境变量加载问题或插件缺失。

处理步骤:先确认环境变量有没有进各层配置(/etc/environment、$HOME/.xprofile、启动脚本),再按5.2节的插件复制方法处理,基本能解决。

6.5 编译过程中系统卡死或内存不足

QT6.0的编译非常吃内存,建议8GB内存以上的机器使用make -j$(nproc),8GB以下适当降低并行度:

make -j4

如果并行编译导致内存耗尽,可以通过修改qtbase/mkspecs/common/linux.conf里的QMAKE_CFLAGS加-pipe,减少临时文件在磁盘和内存间的交换。也可以给系统增加swap空间,一举两得:

sudo fallocate -l 4G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile

6.6 银河麒麟V10的软件源更新失败

症状:apt update报404或无法解析域名。

原因:系统的源地址针对老版本,源已被上游移除或调整。

处理:编辑/etc/apt/sources.list,替换成可用的镜像源地址。比如:

deb https://mirrors.aliyun.com/kylin/KYLIN-10-SP1 10.1 main restricted universe multiverse

注意版本号要匹配。如果不知道自己的版本号对应的源,可以用sudo apt-get update -o Acquire::http::No-Cache=True强制刷新缓存。

7. 常用命令与状态检查清单

最后整理一份我在几次搭建过程中沉淀下来的命令速查表,方便复制使用。

用途命令
查看系统版本cat /etc/kylin-release
查看内核版本uname -a
安装基础依赖sudo apt update && sudo apt install -y build-essential libgl1-mesa-dev libfontconfig1-dev libfreetype6-dev libx11-dev libx11-xcb-dev libxext-dev libxi-dev libxrender-dev libxkbcommon-dev libxkbcommon-x11-dev libxcb-* libegl1-mesa-dev libgles2-mesa-dev libcurl4-openssl-dev libclang-dev
添加pip镜像pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
安装Fcitx5sudo apt install -y fcitx5 fcitx5-chinese-addons fcitx5-config-qt
配置输入法环境变量编辑/etc/environment
配置Qt环境变量编辑/etc/profile.d/qt6.0.sh
下载Qt6.0源码wget https://mirrors.ustc.edu.cn/qtproject/archive/qt/6.0/6.0.0/submodules/qtbase-everywhere-src-6.0.0.zip
配置Qt构建../configure -prefix /opt/Qt6.0.0 -release -opensource -confirm-license -nomake examples -nomake tests -skip qtdeclarative -skip qtquickcontrols2 -no-opengl
编译Qtmake -j$(nproc) && sudo make install
检查qmake版本/opt/Qt6.0.0/bin/qmake --version
添加swapsudo fallocate -l 4G /swapfile && sudo chmod 600 /swapfile && sudo mkswap /swapfile && sudo swapon /swapfile
列出fcitx5插件find /usr -name "libfcitx5platforminputcontextplugin.so" 2>/dev/null

8. 实操心得与后续扩展建议

这套环境我在三台不同配置的麒麟V10机器上完整搭过,有几点经验值得单独再说一次。

第一,不要跳过镜像加速这一步。很多人觉得“反正就几条命令,慢就慢吧”,结果源更新卡在某个软件包上,白白等十分钟。磨刀不误砍柴工,先把国内镜像配置好,后面所有环节都更快更稳。

第二,环境变量这件事一定要从系统层面全局考虑。只改终端会话的~/.bashrc,会出现“终端里用qmake正常、桌面上Qt Creator找不到”这种让人抓狂的问题。这次干脆把输入法变量和Qt环境变量都放到全局配置,重启一次全都好。

第三,如果是在虚拟机上搭建这套环境,建议先给虚拟机分配至少4GB内存和50GB磁盘空间。内存太小编译会卡死,磁盘太小QT库加工具链占满分区,后续装软件又会逼着你去清理。我自己第一次在2GB内存的虚拟机上编QT,光swap就折腾了半天。

这套环境搭好后,日常开发没问题了,但我建议后面还可以做两件提升效率的事情:一是安装ccache,用来缓存C++编译结果,QT项目改一行代码重编的耗时能明显缩短;二是把环境包配置脚本化(比如用Ansible或Shell脚本),这样以后在新机器上复现环境只需要执行一个脚本,不需要再一步步手工操作。

另一个值得尝试的方向是交叉编译。如果业务上需要在ARM架构的麒麟设备上运行QT应用,那么可以在x86机器上配置好交叉编译工具链,用这套QT6.0环境直接编译出ARM平台的应用程序,部署效率会高很多。这个后面有机会我再单独展开写一篇。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询