CRF++安装,提示libstdc++.so.6: version `GLIBCXX_3.4.20′ not

安装CRF++, 

到CRF++网站CRF++: Yet Another CRF toolkit下载C++源代码安装包(这里用的是 CRF++-0.58.tar.gz ),解压,进入解压文件并如下过程安装

hd@hd:~/DLStudy$ tar -zxvf CRF++-0.58.tar.gz
hd@hd:~/DLStudy$ cd CRF++-0.58/
hd@hd:~/DLStudy/CRF++-0.58$ ./configure
hd@hd:~/DLStudy/CRF++-0.58$ make
hd@hd:~/DLStudy/CRF++-0.58$ sudo make install

在当前文件夹下cd python进入安装python包

hd@hd:~/DLStudy/CRF++-0.57$ cd python/
hd@hd:~/DLStudy/CRF++-0.57/python$ python setup.py build
hd@hd:~/DLStudy/CRF++-0.57/python$ sudo python setup.py install

此时,当我们在Python环境下调用CRFPP时,出现如下错误

hd@hd:~/DLStudy/CRF++-0.57/python$ sudo python
Python 2.7.12 (default, Nov 19 2016, 06:48:10)
[GCC 5.4.0 20160609] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import CRFPP
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "CRFPP.py", line 25, in <module>
    _CRFPP = swig_import_helper()
  File "CRFPP.py", line 17, in swig_import_helper
    import _CRFPP
ImportError: /home/hd/anaconda2/lib/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by /usr/lib/libcrfpp.so.0)
>>>

提示"anaconda2/lib/libstdc++.so.6: version `GLIBCXX_3.4.20' not found"

 

解决方法:

1. 首先查找libstdc++.so.6存在的位置:

hd@hd:~$ sudo find / -name libstdc++.so.6*
/home/hd/anaconda2/lib/libstdc++.so.6.0.19
/home/hd/anaconda2/lib/libstdc++.so.6
/home/hd/anaconda2/pkgs/libgcc-4.8.5-2/lib/libstdc++.so.6.0.19
/home/hd/anaconda2/pkgs/libgcc-4.8.5-2/lib/libstdc++.so.6
find: ‘/run/user/1000/gvfs’: Permission denied
/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.21
/usr/lib/x86_64-linux-gnu/libstdc++.so.6
/usr/share/gdb/auto-load/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.21-gdb.py

这说明在多个文件夹都存在。

分别检查每个路径下是否存在GLIBCXX_3.4.20.

hd@hd:~$ strings /home/hd/anaconda2/lib/libstdc++.so.6 | grep GLIBCXX
GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_3.4.9
GLIBCXX_3.4.10
GLIBCXX_3.4.11
GLIBCXX_3.4.12
GLIBCXX_3.4.13
GLIBCXX_3.4.14
GLIBCXX_3.4.15
GLIBCXX_3.4.16
GLIBCXX_3.4.17
GLIBCXX_3.4.18
GLIBCXX_3.4.19
GLIBCXX_DEBUG_MESSAGE_LENGTH

可以发现,其中没有GLIBCXX_3.4.20,这就是为什么前面提示出错的原因

那么在检查/usr/lib/x86_64-linux-gnu/中是否存在,

hd@hd:~$ strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBCXX
GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_3.4.9
GLIBCXX_3.4.10
GLIBCXX_3.4.11
GLIBCXX_3.4.12
GLIBCXX_3.4.13
GLIBCXX_3.4.14
GLIBCXX_3.4.15
GLIBCXX_3.4.16
GLIBCXX_3.4.17
GLIBCXX_3.4.18
GLIBCXX_3.4.19
GLIBCXX_3.4.20
GLIBCXX_3.4.21
GLIBCXX_DEBUG_MESSAGE_LENGTH

 可以发现其中存在GLIBCXX_3.4.20

 

3. 重新做链接

hd@hd:~$ sudo cp /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.21 /home/hd/anaconda2/lib/
hd@hd:~$ sudo rm -rf /home/hd/anaconda2/lib/libstdc++.so.6 hd@hd:~$ sudo ln -s /home/hd/anaconda2/lib/libstdc++.so.6.0.21 /home/hd/anaconda2/lib/libstdc++.so.6

 

4.检查问题是否解决,看是否可以import CRFPP:

hd@hd:~$ sudo python
Python 2.7.12 (default, Nov 19 2016, 06:48:10)
[GCC 5.4.0 20160609] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import CRFPP
>>>

此时不在有错误提示。问题解决

 

更多参考:

关于libstdc++.so.6: version `GLIBCXX_3.4.20' not found问题解决

CRF++ 实现中文分词

中文分词入门之字标注法4

原文链接: https://www.cnblogs.com/huadongw/p/7224052.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    CRF++安装,提示libstdc++.so.6: version `GLIBCXX_3.4.20' not

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/257322

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月14日 上午10:46
下一篇 2023年2月14日 上午10:47

相关推荐