最近有个项目需要在Linux使用中文输入,但是发现Qt Creator以及Qt编译出来的程序无法使用搜狗输入法输入中文,一口老血,不过还好,最终在各种google、百度下得以解决,特此记录下这痛并快乐的时光。
Linux下输入中文需要fcitx输入法插件文件:libfcitxplatforminputcontextplugin.so
Qt5.4及以前的版本
使用dpkg
查找插件文件,fcitx在fcitx-frontend-qt5中,没有就用sudo apt-get install fcitx-frontend-qt5
命令安装。
$ dpkg -L fcitx-frontend-qt5 | grep .so
/usr/lib/aarch64-linux-gnu/qt5/plugins/platforminputcontexts/libfcitxplatforminputcontextplugin.so
解决Qt Creator无法输入中文,执行以下命令(Qt安装目录根据自己实际情况修改):
$ cd Qt安装目录/Tools/QtCreator/lib/Qt/plugins/platforminputcontexts/
$ sudo cp /usr/lib/aarch64-linux-gnu/qt5/plugins/platforminputcontexts/libfcitxplatforminputcontextplugin.so ./
$ sudo chmod +x libfcitxplatforminputcontextplugin.so
解决Qt编译的程序无法输入中文,执行以下命令(Qt安装目录根据自己实际情况修改,我的为5.13.0):
$ cd Qt安装目录/5.13.0/plugins/platforminputcontexts
$ cp /usr/lib/aarch64-linux-gnu/qt5/plugins/platforminputcontexts/libfcitxplatforminputcontextplugin.so ./
$ chmod +x libfcitxplatforminputcontextplugin.so
Qt5.4以后的版本
由于apt-get install命令安装的fcitx-frontend-qt5版本太老,与Qt5.4以后的版本不兼容,所以需要重新编译fcitx-qt5。
1. 安装CMake
,已安装可跳过
- 命令安装
$ sudo apt-get install cmake
- **源码安装:**下载CMake V3.16.0源码包
$ tar zxvf CMake-3.16.0.tar.gz
$ cd CMake-3.16.0.tar.gz
$ ./configure或./bootstrap
$ sudo make
$ sudo make install
2. 安装fcitx-libs-dev
注:已安装可跳过(我是使用命令安装的,有兴趣的同学可以研究一下源码安装,要是能再指导一下我就更棒了)
- 命令安装
$ sudo apt-get install fcitx-libs-dev
3. 编译fcitx-qt5
- 下载fcitx-qt5源码
$ git clone git@github.com:fcitx/fcitx-qt5.git
- 编译
$ export PATH="/usr/local/Qt5.13.0/bin":$PATH //设置Qt的环境变量,Qt bin目录路径根据自己实际情况修改
$ cd /fcitx-qt5
$ sudo cmake .
$ sudo make
- 拷贝
libfcitxplatforminputcontextplugin.so
编译完成后会在源码的platforminputcontexts
目录下生成libfcitxplatforminputcontextplugin.so
,将libfcitxplatforminputcontextplugin.so
分别拷贝至以下目录(Qt安装目录根据自己实际情况修改,我的为5.13.0)
解决Qt Creator无法输入中文目录:Qt安装目录/Tools/QtCreator/lib/Qt/plugins/platforminputcontexts/
解决Qt编译的程序无法输入中文目录:Qt安装目录/5.13.0/plugins/platforminputcontexts
- 赋予插件
libfcitxplatforminputcontextplugin.so
执行权限
$ cd 到上面两个目录中
$ sudo chmod +x libfcitxplatforminputcontextplugin.so
4. 错误解决
- 执行
cmake .
时出错
CMake Error at CMakeLists.txt:8 (find_package):
Could not find a package configuration file provided by “ECM” (requested
version 1.4.0) with any of the following names:
ECMConfig.cmake
ecm-config.cmake
Add the installation prefix of “ECM” to CMAKE_PREFIX_PATH or set “ECM_DIR”
to a directory containing one of the above files. If “ECM” provides a
separate development package or SDK, be sure it has been installed.
– Configuring incomplete, errors occurred!
解决办法
下载extra-cmake-modules_1.4.0.orig.tar.xz
$ tar xvf extra-cmake-modules_1.4.0.orig.tar.xz
$ cd extra-cmake-modules_1.4.0
$ sudo cmake .
$ sudo make
$ sudo make install
– Found PkgConfig: /usr/bin/pkg-config (found version “0.26”)
– Could NOT find XKBCommon_XKBCommon (missing: XKBCommon_XKBCommon_LIBRARY XKBCommon_XKBCommon_INCLUDE_DIR)
CMake Error at /usr/share/cmake-2.8/Modules/FindPackageHandleStandardArgs.cmake:108 (message):
Could NOT find XKBCommon (missing: XKBCommon_LIBRARIES XKBCommon) (Required
is at least version “0.5.0”)
解决办法
下载libxkbcommon-0.5.0.tar.xz
$ tar xvf libxkbcommon-0.5.0.tar.xz
$ cd libxkbcommon-0.5.0
$ sudo ./configure —prefix=/usr —libdir=/usr/lib/x86_64-linux-gnu —disable-x11
$ sudo make
$ sudo make install
由于编译libxkbcommon
需要用到yacc
命令,没有这个命令会提示以下问题
YACC src/xkbcomp/parser.c
./build-aux/ylwrap: line 176: yacc: command not found
make: *** [src/xkbcomp/parser.c] Error 127
解决办法
- 命令安装
bison
$ sudo apt-get install bison
- 源码安装
bison
下载bison-3.0.4.tar.gz
$ tar zxvf bison-3.0.4.tar.gz
$ cd bison-3.0.4
$ sudo ./configure
$ sudo make
$ sudo make install