胡启良 發表於 2023-6-3 10:38:00

国产化麒麟linux系统QtCreator和QtCreator编译的程序无法输入中文libfcitx最新版本编译1.2.7

<p><strong>1.问题描述</strong></p>
<p>麒麟linux系统QtCreator和QtCreator编译的程序无法输入中文,网上找了很多的libfcitxplatforminputcontextplugin.so库都无法使用正常输入;</p>
<p>Qt版本:5.9.6</p>
<p>麒麟系统版本:海光麒麟桌面版kylin&nbsp;V10&nbsp;SP1&nbsp;&nbsp;小版本号2203 XC-P923P_KOS_2203_AMD_HG_3250_220630_AUDIT_ACTIVE.iso&nbsp;</p>
<p><strong>2.原因分析</strong></p>
<p>是因为缺少了libfcitxplatforminputcontextplugin.so库的原因,但是要编译这个库设置的Qt版本和你的Qt版本匹配才能正常输入,否则无法输入中文;</p>
<p>网上说将路径/usr/lib/x86_64-linux-gnu/qt5/plugins/platforminputcontexts/libfcitxplatforminputcontextplugin.so</p>
<p>复制到程序路径的platforminputcontexts文件夹下,就可以,但是实际测试不行;网上也找了很多编译过的libfcitxplatforminputcontextplugin.so文件,但是都不行。原因是Qt版本不匹配,导致库不能正常加载,程序打开后,切换到中文输入法,没有响应;所以需要针对具体的Qt版本去重新边编译libfcitxplatforminputcontextplugin.so库;我的Qt版本是5.9.6,编译库的时候也需要指定Qt路径,这就是为什么版本不匹配无法正常加载的原因;</p>
<p>3.解决办法:</p>
<p>按照对应的Qt版本去编译这个库libfcitxplatforminputcontextplugin.so;</p>
<p>下面的连接包含成果物和源码,如果你的Qt版本是5.9.6,可以复制连接下载直接,如果不是可以下载下面的连接源码去设置指定QT版本去编译;</p>
<p><strong>链接:https://pan.baidu.com/s/1zvXWSMHDQEvg5tuiIJYAEA</strong><br>提取码:关注微信:QStockView,发送麒麟中文,立刻回复给你;</p>
<p><strong>(</strong><strong>1</strong><strong>)安装</strong><strong>cmake</strong></p>
<p>联网直接输入命令:sudo apt-get install cmake&nbsp; 来安装cmake</p>
<p>下载cmake</p>
<p>http://www.cmake.org/cmake/resources/software.html</p>
<p>将Linux版本软件包解压,tar –zxvf cmake-3.26.3-linux-x86_64.tar.gz</p>
<p>重命名解压文件夹未cmake mv cmake-3.26.3-linux-x86_64 cmake</p>
<p>添加系统路径,export PATH=$PATH:/home/hik/soft/cmake/bin</p>
<p>查看cmake是否安装成功,cmake --version</p>
<p>下载fcitx最新版本</p>
<p>https://download.fcitx-im.org/fcitx-qt5/</p>
<p align="left">cd&nbsp;fcitx-qt5</p>
<p align="left">cmake&nbsp;.</p>
<p align="left">make</p>
<p>sudo&nbsp;make&nbsp;install</p>
<p>执行cmake会报如下错误</p>
<p>CMake Error at CMakeLists.txt:8 (find_package):</p>
<p>&nbsp; Could not find a package configuration file provided by "ECM" (requested</p>
<p>&nbsp; version 1.4.0) with any of the following names:</p>
<p>&nbsp; &nbsp; ECMConfig.cmake</p>
<p>&nbsp; &nbsp; ecm-config.cmake</p>
<p>&nbsp; Add the installation prefix of "ECM" to CMAKE_PREFIX_PATH or set "ECM_DIR"</p>
<p>&nbsp; to a directory containing one of the above files. &nbsp;If "ECM" provides a</p>
<p>&nbsp; separate development package or SDK, be sure it has been installed.</p>
<p>-- Configuring incomplete, errors occurred!</p>
<p>遇到上述错误处里方法:</p>
<p>这个页面&nbsp;https://launchpad.net/ubuntu/+source/extra-cmake-modules/1.4.0-0ubuntu1&nbsp;下载&nbsp;extra-cmake-modules_1.4.0.orig.tar.xz</p>
<p>&nbsp;https://launchpad.net/ubuntu/+source/extra-cmake-modules/5.18.0-0ubuntu1 &nbsp;extra-cmake-modules_5.18.0.orig.tar.xz</p>
<p><strong>(</strong><strong>2</strong><strong>)安装</strong><strong>&nbsp;</strong><strong>extra-cmake-modules_1.4.0.orig.tar.xz</strong></p>
<p>如果联网直接用命令:sudo apt-get install extra-cmake-modules</p>
<p>如果不能联网,则解压后执行下面的命令:</p>
<pre>cd<code>&nbsp;</code>extra-cmake-modules-1.4.0<code></code></pre>
<pre>cmake<code>&nbsp;.</code></pre>
<pre>make<code></code></pre>
<pre>sudo<code>&nbsp;</code>make<code>&nbsp;</code>install</pre>
<p>再次执行fcitx的cmake命令会报如下错误:</p>
<p>- Could NOT find XKBCommon_XKBCommon (missing: XKBCommon_XKBCommon_LIBRARY XKBCommon_XKBCommon_INCLUDE_DIR) (found version "")</p>
<p>CMake Error at /home/hik/soft/cmake/share/cmake-3.26/Modules/FindPackageHandleStandardArgs.cmake:230 (message):</p>
<p>&nbsp; Could NOT find XKBCommon (missing: XKBCommon_LIBRARIES XKBCommon) (Required</p>
<p>&nbsp; is at least version "0.5.0")</p>
<p>Call Stack (most recent call first):</p>
<p>&nbsp; /home/hik/soft/cmake/share/cmake-3.26/Modules/FindPackageHandleStandardArgs.cmake:600 (_FPHSA_FAILURE_MESSAGE)</p>
<p>&nbsp; cmake/FindXKBCommon.cmake:30 (find_package_handle_standard_args)</p>
<p>&nbsp; CMakeLists.txt:43 (find_package)</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>-- Configuring incomplete, errors occurred!</p>
<p>解决办法</p>
<p>联网直接调用sudo apt-get install libxkbcommon-dev</p>
<p><strong>(3</strong><strong>)安装libxkbcommon-dev</strong></p>
<p>联网直接调用sudo apt install libxkbcommon-dev</p>
<p>离线下载安装包</p>
<p>wget&nbsp;http://xkbcommon.org/download/libxkbcommon-0.5.0.tar.xz</p>
<p align="left">解压:tar&nbsp;xf&nbsp;libxkbcommon-0.5.0.tar.xz</p>
<p align="left">进入目录:cd libxkbcommon-0.5.0</p>
<p align="left">禁用高版本编译器并生成makefile文件:./configure&nbsp;--disable-x11</p>
<p align="left">编译:make</p>
<p>安装:sudo&nbsp;make&nbsp;install</p>
<p>执行make的时候又报错</p>
<p>YACC&nbsp;&nbsp;&nbsp;&nbsp; src/xkbcomp/parser.c</p>
<p>./build-aux/ylwrap:行176: yacc:未找到命令</p>
<p>make: *** 错误 127</p>
<p>解决办法:安装bison</p>
<p><strong>(4</strong><strong>)安装Bison </strong></p>
<p>需要​​yacc​​的支持。这个工具包含在软件包​​bison​​中,联网直接执行命令:sudo apt-get install bison</p>
<p>离线下载</p>
<p>https://pkgs.org/download/bison</p>
<p>麒麟系统选择bison_3.5.1+dfsg-1_amd64.deb</p>
<p><img src="https://img2023.cnblogs.com/blog/1076976/202306/1076976-20230603100506088-1695241349.png"></p>
<p>将这个下载地址复制到浏览器后下载文件,复制到电脑上进行安装</p>
<p>http://archive.ubuntu.com/ubuntu/pool/main/b/bison/bison_3.5.1+dfsg-1_amd64.deb</p>
<p><img src="https://img2023.cnblogs.com/blog/1076976/202306/1076976-20230603100517055-1178889866.png"></p>
<p>安装命令:sudo dpkg -i bison_3.5.1+dfsg-1_amd64.deb</p>
<p>版本选3.8.2,太高会报如下错误</p>
<p>正在解压 bison (2:3.8.2+dfsg-1build1) ...</p>
<p>dpkg: 依赖关系问题使得 bison 的配置工作不能继续:</p>
<p>&nbsp;bison 依赖于 libc6 (&gt;= 2.34);然而:</p>
<p>系统中 libc6:amd64 的版本为 2.31-0kylin9.1k20.5。</p>
<p>也不能选太低的版本,否则会报错:</p>
<p>准备解压 bison_3.0.4.dfsg-1build1_amd64.deb&nbsp; ...</p>
<p>正在解压 bison (2:3.0.4.dfsg-1build1) 并覆盖 (2:3.8.2+dfsg-1build1) ...</p>
<p>dpkg: 依赖关系问题使得 bison 的配置工作不能继续:</p>
<p>&nbsp;bison 依赖于 libbison-dev (= 2:3.0.4.dfsg-1build1);然而:</p>
<p>&nbsp; 未安装软件包 libbison-dev。</p>
<p><strong>(5</strong><strong>)继续执行安装libxkbcommon-dev</strong></p>
<p>进入目录:cd libxkbcommon-0.5.0/</p>
<p>编译:make</p>
<p>安装:sudo make install</p>
<p><strong>(6</strong><strong>)继续安装fcitx</strong></p>
<p>cd fcitx-qt5-1.2.7/</p>
<p>mkdir build</p>
<p>cd build</p>
<p>cmake ..</p>
<p>报错如下</p>
<p>CMake Error at CMakeLists.txt:46 (find_package):</p>
<p>&nbsp; By not providing "FindFcitx.cmake" in CMAKE_MODULE_PATH this project has</p>
<p>&nbsp; asked CMake to find a package configuration file provided by "Fcitx", but</p>
<p>&nbsp; CMake did not find one.</p>
<p>&nbsp; Could not find a package configuration file provided by "Fcitx" (requested</p>
<p>&nbsp; version 4.2.8) with any of the following names:</p>
<p>&nbsp;&nbsp;&nbsp; FcitxConfig.cmake</p>
<p>&nbsp;&nbsp;&nbsp; fcitx-config.cmake&nbsp;</p>
<p>&nbsp; Add the installation prefix of "Fcitx" to CMAKE_PREFIX_PATH or set</p>
<p>&nbsp; "Fcitx_DIR" to a directory containing one of the above files.&nbsp; If "Fcitx"</p>
<p>&nbsp; provides a separate development package or SDK, be sure it has been</p>
<p>&nbsp; installed.</p>
<p>解决办法增加编译参数</p>
<p>cmake -DENABLE_LIBRARY=false ..</p>
<p>出现如下报错:</p>
<p>CMake Error at qt5/CMakeLists.txt:1 (find_package):</p>
<p>&nbsp; Could not find a package configuration file provided by "Qt5" (requested</p>
<p>&nbsp; version 5.1.0) with any of the following names:</p>
<p>&nbsp;&nbsp;&nbsp; Qt5Config.cmake</p>
<p>&nbsp;&nbsp;&nbsp; qt5-config.cmake</p>
<p>&nbsp; Add the installation prefix of "Qt5" to CMAKE_PREFIX_PATH or set "Qt5_DIR"</p>
<p>&nbsp; to a directory containing one of the above files.&nbsp; If "Qt5" provides a</p>
<p>&nbsp; separate development package or SDK, be sure it has been installed.</p>
<p>解决方法:</p>
<p>添加qt环境变量,电脑要安装Qt,这里是Qt的安装路径,关键步骤,指定qt编译环境</p>
<p><span style="color: rgba(255, 0, 0, 1)"><strong>export CMAKE_PREFIX_PATH=/home/hik/Qt5.9.6/5.9.6/gcc_64</strong></span></p>
<p>再次执行cmake命令:</p>
<p>hik@hik-dsvt420rhb:~/soft/fcitx-qt5-1.2.7$ cmake -DENABLE_LIBRARY=false .</p>
<p>出现如下报错:</p>
<p>CMake Error at /home/hik/Qt5.9.6/5.9.6/gcc_64/lib/cmake/Qt5Gui/Qt5GuiConfigExtras.cmake:9 (message):</p>
<p>&nbsp; Failed to find "GL/gl.h" in "/usr/include/libdrm".</p>
<p>Call Stack (most recent call first):</p>
<p>&nbsp; /home/hik/Qt5.9.6/5.9.6/gcc_64/lib/cmake/Qt5Gui/Qt5GuiConfig.cmake:172 (include)</p>
<p>&nbsp; /home/hik/Qt5.9.6/5.9.6/gcc_64/lib/cmake/Qt5Widgets/Qt5WidgetsConfig.cmake:89 (find_package)</p>
<p>&nbsp; /home/hik/Qt5.9.6/5.9.6/gcc_64/lib/cmake/Qt5/Qt5Config.cmake:28 (find_package)</p>
<p>&nbsp;&nbsp;qt5/CMakeLists.txt:1 (find_package)</p>
<p><img src="https://img2023.cnblogs.com/blog/1076976/202306/1076976-20230603100554577-860064045.png"></p>
<p>解决方法:</p>
<p>网上查询了一下发现时未安装opengl,于是安装便是了</p>
<p>sudo apt install mesa-common-dev</p>
<p>又出现如下报错:&nbsp;</p>
<p><img src="https://img2023.cnblogs.com/blog/1076976/202306/1076976-20230603100606186-1514025312.png"></p>
<p>执行来更新缺少的软件包</p>
<p>sudo apt-get update</p>
<p>sudo apt-get update –fix-missing</p>
<p>然后再执行如下安装命令,就安装成功了;</p>
<p>sudo apt install mesa-common-dev</p>
<p><img src="https://img2023.cnblogs.com/blog/1076976/202306/1076976-20230603100651453-790456157.png"></p>
<p>再次执行cmake -DENABLE_LIBRARY=false ..</p>
<p><img src="https://img2023.cnblogs.com/blog/1076976/202306/1076976-20230603100700190-33108546.png"></p>
<p>在build文件夹会生成makefile文件,进入build目录执行make命令出现如下错误error: no matching function for call to ‘QMetaObject::invokeMethod(QFcitxPlatformInputContext*, QFcitxPlatformInputContext::setFocusObject(QObject*)::&lt;lambda()&gt;, Qt::ConnectionType)</p>
<p><img src="https://img2023.cnblogs.com/blog/1076976/202306/1076976-20230603100716339-450661991.png"></p>
<p>从这里下载替换的qfcitxplatforminputcontext.cpp 和qfcitxplatforminputcontext.h文件,替换到路径/soft/fcitx-qt5-1.2.7/qt5/platforminputcontext</p>
<p>https://url25.ctfile.com/f/34628125-616663558-6a6901?p=3005 (访问密码: 3005)</p>
<p>最后执行make就会生成so文件</p>
<p>已经编译好的库文件下载链接如下,包含源码,如果使用Qt版本不匹配,需要重新用源码编译,</p>
<p>链接:https://pan.baidu.com/s/1zvXWSMHDQEvg5tuiIJYAEA <br>提取码:关注微信:QStockView,发送麒麟中文,立刻回复给你;</p>
<p><strong>(7)</strong><strong>将soft/fcitx-qt5-1.2.7/build/qt5/platforminputcontext</strong><strong>路径下生成的库文件复制到你的程序目录platforminputcontexts</strong><strong>下面,就可以输入中文了;</strong></p>
<p><img src="https://img2023.cnblogs.com/blog/1076976/202306/1076976-20230603100952175-570278240.png"></p>
<p>(8)将库文件复制到如下Qt安装路径,然后重新打开Qtcreator,使得Qtcreator能够输入中文</p>
<p>/home/hik/Qt5.9.6/Tools/QtCreator/lib/Qt/plugins/platforminputcontexts</p>
<p>/home/hik/Qt5.9.6/5.9.6/gcc_64/plugins/platforminputcontexts</p>
<p><img src="https://img2023.cnblogs.com/blog/1076976/202306/1076976-20230603101010507-636309483.png"></p>

</div>
<div id="MySignature" role="contentinfo">
    自己开发了一个股票智能分析软件,功能很强大,需要的关注微信公众号:QStockView<br><br>
来源:https://www.cnblogs.com/bclshuai/p/17453433.html
頁: [1]
查看完整版本: 国产化麒麟linux系统QtCreator和QtCreator编译的程序无法输入中文libfcitx最新版本编译1.2.7