• 当前位置: 主页 > Linux安装教程 > 软件安装 >

    繁体转简体,CentOS安装OpenCC,升级到gcc4.6

    时间:2016-01-23 02:06来源:未知 作者:Linux先生 举报 点击:
    湖南成人高考 成人高考 成人高考 成人高考  成人高考 成人高考 
    最近在做智能机器人聊天功能,面向的是全国友人,南方地区有使用繁体的,所以需要搞一个繁体转简体的功能接口。Opencc是个非常棒的繁体转简体开源项目,甚至支持些方言文字。

    最近在做智能机器人聊天功能,面向的是全国友人,南方地区有使用繁体的,所以需要搞一个繁体转简体的功能接口。Opencc是个非常棒的繁体转简体开源项目,甚至支持些方言文字。 RIME | 中州韻輸入法引擎,一个支持方言的输入法,哈哈。

     

    开源项目地址:https://github.com/BYVoid/OpenCC

     

    安装步骤:

    $git clone 
    $cd OpenCC
    $make
    $make install

    安装完成后,测试使用:

    $echo '嚴格區分「严格区分「一简对多繁」和「一简对多异」' | opencc -c t2s

    运行效果:

    QQ截图20160122113540.png

     

    注意:

    不过因为我用的 centos 6 有点老了, 过程中也出现了一点小情况,大概记录一下。

    首先,项目页面上有说明,要编译 OpenCC,至少需要 gcc 4.6 或者 clang 3.2,而我系统中还是 gcc 4.4.7

    $gcc -v
    Using built-in specs.
    Target: x86_64-redhat-linux
    Configured with: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-bootstrap --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-languages=c,c++,objc,obj-c++,java,fortran,ada --enable-java-awt=gtk --disable-dssi --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-1.5.0.0/jre --enable-libgcj-multifile --enable-java-maintainer-mode --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --disable-libjava-multilib --with-ppl --with-cloog --with-tune=generic --with-arch_32=i686 --build=x86_64-redhat-linux
    Thread model: posix
    gcc version 4.4.7 20120313 (Red Hat 4.4.7-16) (GCC)

    先升级 gcc 版本(升级过程),新的 gcc 安装在 /usr/local/gcc-4.8.1/ 下面

    $gcc -v
    Using built-in specs.
    COLLECT_GCC=gcc
    COLLECT_LTO_WRAPPER=/usr/local/gcc-4.8.1/libexec/gcc/x86_64-unknown-linux-gnu/4.8.1/lto-wrapper
    Target: x86_64-unknown-linux-gnu
    Configured with: ../configure --prefix=/usr/local/gcc-4.8.1 --enable-checking=release --enable-languages=c,c++ --disable-multilib
    Thread model: posix
    gcc version 4.8.1 (GCC)

    重新编译OpenCC,遇到错误

    $ make...[ 55%] Building STCharacters.ocd
    ../src/tools/opencc_dict: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.15' not found (required by ../src/tools/opencc_dict)
    ../src/tools/opencc_dict: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by ../src/tools/opencc_dict)
    ../src/tools/opencc_dict: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.18' not found (required by /var/www/html/test/fj/opencc-1.0.3/build/rel/src/libopencc.so.2)
    ../src/tools/opencc_dict: /usr/lib64/libstdc++.so.6: version `CXXABI_1.3.5' not found (required by /var/www/html/test/fj/opencc-1.0.3/build/rel/src/libopencc.so.2)
    ../src/tools/opencc_dict: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.14' not found (required by /var/www/html/test/fj/opencc-1.0.3/build/rel/src/libopencc.so.2)
    ../src/tools/opencc_dict: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.15' not found (required by /var/www/html/test/fj/opencc-1.0.3/build/rel/src/libopencc.so.2)
    ../src/tools/opencc_dict: /usr/lib64/libstdc++.so.6: version `CXXABI_1.3.8' not found (required by /var/www/html/test/fj/opencc-1.0.3/build/rel/src/libopencc.so.2)
    ../src/tools/opencc_dict: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by /var/www/html/test/fj/opencc-1.0.3/build/rel/src/libopencc.so.2)
    make[3]: *** [data/STCharacters.ocd] 错误 1
    make[3]: Leaving directory `/var/www/html/test/fj/opencc-1.0.3/build/rel'make[2]: *** [data/CMakeFiles/Dictionaries.dir/all] 错误 2
    make[2]: Leaving directory `/var/www/html/test/fj/opencc-1.0.3/build/rel'make[1]: *** [all] 错误 2
    make[1]: Leaving directory `/var/www/html/test/fj/opencc-1.0.3/build/rel'make: *** [build] 错误 2

    libstdc++ 的问题,检查确认一下

    $ strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX
    3659:GLIBCXX_3.4
    3660:GLIBCXX_3.4.1
    3661:GLIBCXX_3.4.2
    3662:GLIBCXX_3.4.3
    3663:GLIBCXX_3.4.4
    3664:GLIBCXX_3.4.5
    3665:GLIBCXX_3.4.6
    3666:GLIBCXX_3.4.7
    3667:GLIBCXX_3.4.8
    3668:GLIBCXX_3.4.9
    3669:GLIBCXX_3.4.10
    3670:GLIBCXX_3.4.11
    3671:GLIBCXX_3.4.12
    3672:GLIBCXX_3.4.13
    8089:GLIBCXX_FORCE_NEW
    8152:GLIBCXX_DEBUG_MESSAGE_LENGTH

    GLIBCXX 最高只有 3.4.13,查看系统中有没有其他的 libstdc++

    找到一个 6.0.20 的,替换掉当前使用的 libstdc++

    $ sudo cp /usr/local/lib64/libstdc++.so.6.0.20 /usr/lib64/
    $ sudo ln -s -f /usr/lib64/libstdc++.so.6.0.20 /usr/lib64/libstdc++.so.6

    检查一下新的 libstdc++,GLIBCXX 最高到 3.4.20 了

    $ strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX
    3790:GLIBCXX_3.4
    3791:GLIBCXX_3.4.1
    3792:GLIBCXX_3.4.2
    3793:GLIBCXX_3.4.3
    3794:GLIBCXX_3.4.4
    3795:GLIBCXX_3.4.5
    3796:GLIBCXX_3.4.6
    3797:GLIBCXX_3.4.7
    3798:GLIBCXX_3.4.8
    3799:GLIBCXX_3.4.9
    3800:GLIBCXX_3.4.10
    3801:GLIBCXX_3.4.11
    3802:GLIBCXX_3.4.12
    3803:GLIBCXX_3.4.13
    3804:GLIBCXX_3.4.14
    3805:GLIBCXX_3.4.15
    3806:GLIBCXX_3.4.16
    3807:GLIBCXX_3.4.17
    3808:GLIBCXX_3.4.18
    3809:GLIBCXX_3.4.19
    3810:GLIBCXX_3.4.20
    8656:GLIBCXX_FORCE_NEW
    8878:GLIBCXX_DEBUG_MESSAGE_LENGTH

    再重装编译OpenCC,编译成功

    $make
    $make install
    $ which opencc
    /usr/bin/opencc

    查看 OpenCC 版本,报错

    $ opencc --version
    opencc: error while loading shared libraries: libopencc.so.2: cannot open shared object file: No such file or directory

    在系统中找到了相关文件

    $ sudo find / -name libopencc.so.2
    /usr/lib/libopencc.so.2
    ...

    因为是64位系统,尝试在 lib64 目录下建立一个链接文件

    $ sudo ln -s /usr/lib/libopencc.so.2 /usr/lib64/libopencc.so.2

    再次查看 OpenCC 版本,没有报错了

    $ opencc --version
    
    Open Chinese Convert (OpenCC) Command Line Tool
    Version: 1.0.3

    测试使用:

    $echo '严格区分「一简对多繁」和「一简对多异」' | opencc -c t2s
    严格区分「一简对多繁」和「一简对多异」
    推荐内容