无名阁

美好的生活需要用心记录

ibus-rime-0.9.9编译过程时问题的解决办法

2013-5-6 笑看风云 linux知识

今天发现rime输入法最新版出来了,和之前的版本相比他添加了对于我来说最重要的功能,支持用户自定义词库,好了下面我来介绍一下rime-0.9.9版本编译过程中出现的问题以及解决办法。

第一个问题:

在rime刚开始的时候会出现一下错误:

[  1%] Building CXX object src/CMakeFiles/rime.dir/config.cc.o
/home/xuan/atmpdir/rime/ibus-rime/librime/src/config.cc: 在成员函数‘bool rime::ConfigData::LoadFromFile(const string&)’中:
/home/xuan/atmpdir/rime/ibus-rime/librime/src/config.cc:556:22: 错误: ‘LoadFile’不是‘YAML’的成员
/home/xuan/atmpdir/rime/ibus-rime/librime/src/config.cc: 在静态成员函数‘static rime::ConfigItemPtr rime::ConfigData::ConvertFromYaml(const YAML::Node&)’中:
/home/xuan/atmpdir/rime/ibus-rime/librime/src/config.cc:604:49: 错误: ‘const class YAML::Node’没有名为‘as’的成员
/home/xuan/atmpdir/rime/ibus-rime/librime/src/config.cc:604:63: 错误: expected primary-expression before ‘>’ token
/home/xuan/atmpdir/rime/ibus-rime/librime/src/config.cc:604:65: 错误: expected primary-expression before ‘)’ token
/home/xuan/atmpdir/rime/ibus-rime/librime/src/config.cc:608:5: 错误: ‘const_iterator’不是‘YAML’的成员
/home/xuan/atmpdir/rime/ibus-rime/librime/src/config.cc:608:26: 错误: expected ‘;’ before ‘it’
/home/xuan/atmpdir/rime/ibus-rime/librime/src/config.cc:609:5: 错误: ‘const_iterator’不是‘YAML’的成员
/home/xuan/atmpdir/rime/ibus-rime/librime/src/config.cc:609:26: 错误: expected ‘;’ before ‘end’
/home/xuan/atmpdir/rime/ibus-rime/librime/src/config.cc:610:13: 错误: ‘it’在此作用域中尚未声明
/home/xuan/atmpdir/rime/ibus-rime/librime/src/config.cc:610:19: 错误: ‘end’在此作用域中尚未声明
/home/xuan/atmpdir/rime/ibus-rime/librime/src/config.cc:610:19: 附注: 建议的替代:

解决办法:

这个问题的出现是因为rime0.9.9对yaml-cpp的版本要求是0.5或者以上,但是Ubuntu的软件源里面只有0.3的版本,这里我们又需要手动编译此依赖。

第二个问题:

在解决了上面的问题之后我们会遇到这个问题,在编译到最后的时候会出现缺少/usr/lib/i386-linux-gnu/libyaml-cpp.so库文件。

解决方法:

这个问题的解决方法就很简单了,把之前编译好的yaml-cpp库文件复制到那个位置就行了。

sudo ln -s /usr/local/lib/libyaml-cpp.so.0.5.1 /usr/lib/i386-linux-gnu/libyaml-cpp.so
第三个问题:

在编译到百分之九十几的时候会出现这个错误:

./make_essay.sh ./make_essay.sh: 4: ./make_essay.sh: kctreemgr: not found

./make_essay.sh: 5: ./make_essay.sh: kctreemgr: not found

解决办法:安装kyotocabinet-utils,

sudo apt-get install kyotocabinet-utils -y

第三个问题:

这个问题依然是yaml-cpp的问题,在编译到最后的时候会提示什么无法找到yaml-cpp。

解决办法:

这个问题似乎是因为系统的库文件没有更新导致的。执行下面的命令就可以解决。

sudo ldconfig
好了,剩下的就没有什么错误了,我都对rime的开发者建议过好几次了,架设一个Ubuntu的ppa对用户来说比手动编译方便很多。

ps:我发现rime使用文本词库有一点没有把自定义短语写进词库文件好,那就是自定义短语无法参与组词,无法进行词频调整。

标签: rime

et_highlighter51

发表评论: