尧图网络科技YAOTU DIGITAL 获取报价
获取报价
首页 / 资讯中心 / 文章详情

银河麒麟V10源码编译QT6.0与Fcitx5中文输入法配置指南

发布时间:2026/9/29 2:16:22

资讯中心
01
ARTICLE

银河麒麟V10源码编译QT6.0与Fcitx5中文输入法配置指南

银河麒麟V10源码编译QT6.0与Fcitx5中文输入法配置指南
直接切入正题。国产系统这两年装机量上去了但“装好系统只是开始能用起来才是真本事”这句话在银河麒麟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支持、以及C17的全面拥抱。但老项目迁移QT6确实有成本不少模块从QRegExp换成QRegularExpressionQTextCodec被移除等等。所以我的建议是如果项目是全新的直接上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 EOFnpm配置如果系统装了nodejsnpm config set registry https://registry.npmmirror.com2.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 cmake3. 中文输入法环境搭建输入法看着简单实际操作中90%的环境问题都出在这一步。我先说结论麒麟V10上装Fcitx5然后设置好环境变量并确保Qt程序能找到它。3.1 安装Fcitx5输入法框架及中文引擎麒麟V10的源里已经带了Fcitx5相关包直接安装sudo apt install -y fcitx5 fcitx5-chinese-addons fcitx5-config-qtfcitx5-chinese-addons是中文输入的核心扩展包包含了拼音、双拼、五笔等输入引擎还有词库。fcitx5-config-qt是图形化配置界面必装后面调整快捷键、候选词个数都要用它。安装完成后先别急着启动把自动启动配置加上。在/etc/xdg/autostart/下建立一个fcitx5.desktop文件[Desktop Entry] TypeApplication NameFcitx5 Execfcitx5 X-GNOME-Autostart-enabledtrue如果文件已存在确认Exec行是fcitx5而不是fcitx4或ibus-daemon。3.2 设置环境变量与输入法切换快捷键这是整个配置里最重要的一步也是容易被忽略的一步。在/etc/environment文件末尾追加以下内容GTK_IM_MODULEfcitx QT_IM_MODULEfcitx XMODIFIERSimfcitx SDL_IM_MODULEfcitx GLFW_IM_MODULEibus稍微解释一下每个变量的作用GTK_IM_MODULEGTK程序大多数Linux桌面应用的输入法模块。QT_IM_MODULEQt程序包括Qt Creator和所有用Qt开发的应用的输入法模块设为fcitx后程序启动时就会去加载Fcitx5的Qt插件。XMODIFIERSX11窗口系统下的全局输入法标识用于接管X应用里的输入焦点。SDL_IM_MODULE游戏和多媒体框架SDL的输入法模块如果不用SDL可以不设。GLFW_IM_MODULEOpenGL窗口库GLFW的输入法模块。这里为什么要设成ibus实测下来Fcitx5对GLFW的原生支持还不够稳定用ibus协议反而能正确弹出候选框。改完环境变量后一定记得注销当前用户或重启系统让变量生效到桌面环境的整个会话。很多人改了/etc/environment后直接开Qt Creator发现还是没输入法就是因为环境变量没有重新加载。3.3 验证中文输入是否正常重启后打开任意文本编辑器比如系统自带的文本编辑器或QT程序示例里的Text Editor按CtrlSpace看能否唤出输入法候选词。如果发现系统自带的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开发用了。如果担心包里缺组件可以在同目录下把qtsvgSVG图标支持也下载下来这个体积小、编译快实际项目中经常用到。源码下载完成后解压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 -j816核是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 Creatorwget 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_MODULEfcitx export QT_IM_MODULEfcitx export XMODIFIERSimfcitx同时在Qt Creator的工具 - 选项 - 环境 - 系统里确认Locale设置为zh_CN。再把输入法切换快捷键CtrlSpace也确认一下没有冲突。如果这样还不行那大概率是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里按CtrlSpace如果出现拼音候选词恭喜你Qt6.0中文输入法环境的最后一环也算打通了。6. 常见问题排查与实战经验这部分我整理了高频问题和相应的解决方案基本覆盖了搭建过程中90%的坑。6.1 环境变量不生效症状改完/etc/environment后重启系统输入法还是不能用。原因某些桌面环境不读/etc/environment或者变量被系统配置覆盖。排查步骤# 检查变量是否生效 echo $QT_IM_MODULE # 如果输出为空说明变量没进会话解决办法是检查~/.xprofile或~/.xinitrc把环境变量也追加一份cat ~/.xprofile EOF export GTK_IM_MODULEfcitx export QT_IM_MODULEfcitx export XMODIFIERSimfcitx EOF保存后重新登录即可。6.2 Fcitx5启动了但输入法切换不出来症状面板看到Fcitx5在运行但CtrlSpace毫无反应。原因多半是当前窗口的输入法闸门没开或者快捷键冲突。排查步骤右键Fcitx5托盘图标进入配置 - 全局选项 - 热键确认切换快捷键是CtrlSpace且没有和其他应用冲突。手动点击托盘图标切换输入法排除快捷键本身的问题。在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 /swapfile6.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-CacheTrue强制刷新缓存。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/null8. 实操心得与后续扩展建议这套环境我在三台不同配置的麒麟V10机器上完整搭过有几点经验值得单独再说一次。第一不要跳过镜像加速这一步。很多人觉得“反正就几条命令慢就慢吧”结果源更新卡在某个软件包上白白等十分钟。磨刀不误砍柴工先把国内镜像配置好后面所有环节都更快更稳。第二环境变量这件事一定要从系统层面全局考虑。只改终端会话的~/.bashrc会出现“终端里用qmake正常、桌面上Qt Creator找不到”这种让人抓狂的问题。这次干脆把输入法变量和Qt环境变量都放到全局配置重启一次全都好。第三如果是在虚拟机上搭建这套环境建议先给虚拟机分配至少4GB内存和50GB磁盘空间。内存太小编译会卡死磁盘太小QT库加工具链占满分区后续装软件又会逼着你去清理。我自己第一次在2GB内存的虚拟机上编QT光swap就折腾了半天。这套环境搭好后日常开发没问题了但我建议后面还可以做两件提升效率的事情一是安装ccache用来缓存C编译结果QT项目改一行代码重编的耗时能明显缩短二是把环境包配置脚本化比如用Ansible或Shell脚本这样以后在新机器上复现环境只需要执行一个脚本不需要再一步步手工操作。另一个值得尝试的方向是交叉编译。如果业务上需要在ARM架构的麒麟设备上运行QT应用那么可以在x86机器上配置好交叉编译工具链用这套QT6.0环境直接编译出ARM平台的应用程序部署效率会高很多。这个后面有机会我再单独展开写一篇。
02
RELATED NEWS

相关资讯

更多网站建设与数字化升级内容

03
WHY YAOTU

想打造同款高转化官网?

懂行业、懂生意,从建站到增长一站式陪跑

◈

场景化定制

不做模板站,围绕你的业务场景量身设计,小众不撞款。

◐

营销型架构

以转化目标组织内容与路径,让官网真正带来询盘。

▲

全周期服务

设计、开发、运营、运维一体,上线只是开始。

免费获取你的建站方案

留下需求,专属顾问 24 小时内为你输出方案建议。