Rtidyverse包安装报错/lib64/libstdc++.so.6: version `CXXABI_1.3.9'

匿名 (未验证) 提交于 2019-12-02 23:32:01
版权声明:博客授权, 请联系我, 微信: yijiaobani, 备注: 姓名+ 单位 https://blog.csdn.net/yijiaobani/article/details/90234618

报错信息

  • /lib64/libstdc++.so.6 目录文件, 没有CXXABI_1.3.9这个版本
  • 而这个版本是需要的, 因为tidyr.so需要调用它
Error: package or namespace load failed for ‘tidyverse’ in dyn.load(file, DLLpath = DLLpath, ...):  unable to load shared object '/home/dengfei/anaconda3/lib/R/library/tidyr/libs/tidyr.so':   /lib64/libstdc++.so.6: version `CXXABI_1.3.9' not found (required by /home/dengfei/anaconda3/lib/R/library/tidyr/libs/tidyr.so) 

解决思路

  • 查看/lib64/libstdc++.so.6的拥有的版本号, 一般来说是版本太老
  • 在服务器上找到这个动态库(肯定有新的)
  • 将新的动态库copy到路径下
  • 将软链接libstdc++.so.6关联新的文件

1. 查看/lib64/libstdc++.so.6版本号

(base) [root@localhost bin]# strings /lib64/libstdc++.so.6 |grep CXXABI CXXABI_1.3 CXXABI_1.3.1 CXXABI_1.3.2 CXXABI_1.3.3 CXXABI_1.3.4 CXXABI_1.3.5 CXXABI_1.3.6 CXXABI_1.3.7 CXXABI_TM_1  

可以看到, 里面没有CXXABI_1.3.9这个版本

2. 查看服务器上, 还有没有其它的libstdc++.so.6库, 并查看他的版本是否有CXXABI_1.3.9

find / -name 'libstdc++.so' /root/anaconda3/pkgs/libstdcxx-ng-8.2.0-hdf63c60_1/lib/libstdc++.so /root/anaconda3/pkgs/libstdcxx-ng-8.2.0-hdf63c60_1/x86_64-conda_cos6-linux-gnu/sysroot/lib/libstdc++.so /root/anaconda3/pkgs/gxx_impl_linux-64-7.3.0-hdf63c60_1/x86_64-conda_cos6-linux-gnu/lib/libstdc++.so  

可以看到, 我的anaconda中已经有这个库了, 查看一下是否有版本CXXABI_1.3.9

(base) [root@localhost bin]# strings /root/anaconda3/pkgs/libstdcxx-ng-8.2.0-hdf63c60_1/lib/libstdc++.so | grep 'CXXABI' CXXABI_1.3 CXXABI_1.3.1 CXXABI_1.3.2 CXXABI_1.3.3 CXXABI_1.3.4 CXXABI_1.3.5 CXXABI_1.3.6 CXXABI_1.3.7 CXXABI_1.3.8 CXXABI_1.3.9 CXXABI_1.3.10 CXXABI_1.3.11 CXXABI_TM_1 CXXABI_FLOAT128 CXXABI_1.3 CXXABI_1.3.11 CXXABI_1.3.2 CXXABI_1.3.6 CXXABI_FLOAT128 CXXABI_1.3.9 CXXABI_1.3.1 CXXABI_1.3.5 CXXABI_1.3.8 CXXABI_1.3.4 CXXABI_TM_1 CXXABI_1.3.7 CXXABI_1.3.10 CXXABI_1.3.3  

可以看到, 是有CXXABI_1.3.9版本的.

查看一下它真正的文件, 使用ls -l命令

(base) [root@localhost bin]# ls -l /root/anaconda3/pkgs/libstdcxx-ng-8.2.0-hdf63c60_1/lib/libstdc++.so   lrwxrwxrwx. 1 root root 19 Jan 15 16:22 /root/anaconda3/pkgs/libstdcxx-ng-8.2.0-hdf63c60_1/lib/libstdc++.so -> libstdc++.so.6.0.25  

libstdc++.so.6.0.25这个文件才是我们需要的.

将动态库复制到目标路径下:

 cp /root/anaconda3/pkgs/libstdcxx-ng-8.2.0-hdf63c60_1/lib/libstdc++.so.6.0.25 /lib64/  

查看文件

(base) [root@localhost lib64]# ls -l libstdc++.so.6* lrwxrwxrwx. 1 root root      19 Mar  2 13:06 libstdc++.so.6 -> libstdc++.so.6.0.19 -rwxr-xr-x. 1 root root  991616 Oct 30  2018 libstdc++.so.6.0.19 -rwxr-xr-x. 1 root root 9536208 May 15 13:48 libstdc++.so.6.0.25 

这里, 将动态库libstdc++.so.6的链接由libstdc++.so.6.0.19, 变为libstdc++.so.6.0.25即可.

这里的ln -sf 是强制覆盖创建软链接.

(base) [root@localhost lib64]# ln -sf libstdc++.so.6.0.25 libstdc++.so.6 (base) [root@localhost lib64]# ls -l libstdc++.so.6* lrwxrwxrwx. 1 root root      19 May 15 13:51 libstdc++.so.6 -> libstdc++.so.6.0.25 -rwxr-xr-x. 1 root root  991616 Oct 30  2018 libstdc++.so.6.0.19 -rwxr-xr-x. 1 root root 9536208 May 15 13:48 libstdc++.so.6.0.25 (base) [root@localhost lib64]#   

搞定.

文章来源: https://blog.csdn.net/yijiaobani/article/details/90234618
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!