问题Python环境下调用CRFPP时,出现如下错误hd@hd:~/DLStudy/CRF++-0.57/python$ sudo pythonPython 2.7.12 (default, Nov 19 2016, 06:48:10)[GCC 5.4.0 20160609] on linux2Type help, copyright, credi...
问题
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)
>>>
解决步骤
- 首先查找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. 复制.so文件到缺失目录下并重新做软链接
注意: 我的缺失.so文件目录是前面提到的/home/hd/anaconda2/lib/你需要换成你自己报错信息对应的目录
sudo cp /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.21 /home/hd/anaconda2/lib/
sudo mv /home/hd/anaconda2/lib/libstdc++.so.6 /home/hd/anaconda2/lib/libstdc++.so.6.bak
sudo ln -s /home/hd/anaconda2/lib/libstdc++.so.6.0.21 /home/hd/anaconda2/lib/libstdc++.so.6
4.重新执行命令检查问题是否解决
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
>>>
此时不在有错误提示。问题解决
- 点赞
- 收藏
- 分享
-
- 文章举报
本文标题为:Linux下 libstdc++.so.6: version `GLIBCXX_3.4.20' not found解决办法
- 我应该为我的项目使用相对包含路径,还是将包含目录放在包含路径上? 2022-10-30
- ubuntu下C/C++获取剩余内存 2023-09-18
- C++ 数据结构超详细讲解顺序表 2023-03-25
- 详解C语言中sizeof如何在自定义函数中正常工作 2023-04-09
- C语言详解float类型在内存中的存储方式 2023-03-27
- C语言手把手带你掌握带头双向循环链表 2023-04-03
- Qt计时器使用方法详解 2023-05-30
- c++ const 成员函数,返回一个 const 指针.但是返回的指针是什么类型的 const? 2022-10-11
- Easyx实现扫雷游戏 2023-02-06
- C语言qsort()函数的使用方法详解 2023-04-26