忙里偷闲,随便写写。
在代码运行的时候可能会出现一下错误:
ImportError: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by /data10/gaoxl/install/anaconda3/envs/paddle37/lib/python3.7/site-packages/scipy/_lib/_uarray/_uarray.cpython-37m-x86_64-linux-gnu.so)
这是因为Linux系统中,glibc版本较低 ,那怎么解决这个问题呢?
1.首先你需要解决的一件事情是:“用户名不在sudoers中”的问题,这是一开始的拦路虎,因为你会发现,没有这个权限你将无法操作以下的步骤。那怎么解决“用户名不在sudoers中”的问题呢?方法是:
①在终端输入命令:su root # 先切换到 root 用户
②继续输入命令:gedit /etc/sudoers # 打开权限文件
③在跳出来的 /etc/sudoers 文件中找到Allow root to run any commands anywhere,在其下方添加命令:
root ALL=(ALL) ALL
zjl ALL=(ALL) ALL
④保存退出 root 用户
这样,你就把自己的用户名写进了 sudoers中
2.查找所有gcc动态库,找到anaconda,在终端输入命令:
find / -name "libstdc++.so*"
你会发现没有 GLIBCXX_3.4.21 在输出的结果中找到:
/home/zjl/anaconda3/lib/libstdc++.so.6
/home/zjl/anaconda3/lib/libstdc++.so.6.0.28
/home/zjl/anaconda3/lib/libstdc++.so
将上面的最新动态库libstdc++.so.6.0.28复制到/usr/lib64目录下:
sudo cp /home/zjl/anaconda3/lib/libstdc++.so.6.0.28 /usr/lib64/
进入目录/usr/lib64
cd /usr/lib64
ll | grep libstdc
备份,输入命令:
sudo mv libstdc++.so.6 libstdc++.so.6.bak
创建新的软连接,指向刚拷贝的库:
sudo ln -s libstdc++.so.6.0.28 libstdc++.so.6
重新运行检查动态库的命令:
strings /usr/lib64/libstdc++.so.6 | grep GLIBC
大功告成!!
注意:Linux如何建立和删除软连接呢?
建立:ln -s 源文件 目标文件
例如:ln -s libstdc++.so.6.0.28 libstdc++.so.6
删除:rm -rf 目标文件
例如:rm -rf libstdc++.so.6
如果是:rm -rf 源文件/ 会把整个目录都删了