为了使用DiffusionMap,需要安装destiny,但是遇到报错libstdc++.so.6: version GLIBCXX_3.4.30' not found
尝试了多种安装方式也没有解决,最后通过指定libstdc++.so.6后解决。
Error in dyn.load(file, DLLpath = DLLpath, ...) :
unable to load shared object '/usr/local/lib/R/site-library/ranger/libs/ranger.so':
/usr/lib/x86_64-linux-gnu/libstdc++.so.6: version GLIBCXX_3.4.30' not found (required by /usr/local/lib/R/site-library/ranger/libs/ranger.so)
Calls: <Anonymous> ... asNamespace -> loadNamespace -> library.dynam -> dyn.load
Execution halted
ERROR: lazy loading failed for package ‘destiny’
* removing ‘/home/chencx/R/x86_64-pc-linux-gnu-library/4.3/destiny’
Warning in install.packages :
installation of package ‘/home/XXX/software/tools/density/destiny_3.18.0.tar.gz’ had non-zero exit status
1.检查确定路径
## 查找libstdc++.so.6路径
# 1.自己路径下
find /home/username/ -name libstdc++.so.6/
# 2.所有路径下
find /home/ -name libstdc++.so.6/
如果自己路径下没有安装libstdc++.so.6,可以查看服务器上全部的libstdc++.so.6路径,得到类型下列结果:
所有路径
2.指定路径安装
然后搜索这些libstdc++.so.6哪些是包含GLIBCXX_3.4.30的
## 查看可以用libstdc++.so.6路径
strings /pathto/libstdc++.so.6 | grep GLIBCXX_3.4.30
# 成功输出 GLIBCXX_3.4.30
确定了可以用的libstdc++.so.6路径后,从Bioconductor下载最新的destiny源文件压缩包,并用指定的libstdc++.so.6路径安装
3.安装
# 下载
setwd('/install_path/')
wget https://www.bioconductor.org/packages/release/bioc/src/contrib/destiny_3.18.0.tar.gz
# 安装
LD_PRELOAD=/pathto/libstdc++.so.6 R CMD INSTALL destiny_3.18.0.tar.gz
# 加载
export LD_PRELOAD=/pathto/libstdc++.so.6 # 可以把这添加到你的环境变量
R
library(destiny)
全部过程中最终要的就是第二部找出可用的/pathto/libstdc++.so.6
,在我的服务器上有多个路径,但是默认的/usr/lib/x86_64-linux-gnu/libstdc++.so.6
没有GLIBCXX_3.4.30所以造成了安装不上的问题,找到可用路径,指定安装就可以啦!
欢迎大家评论交流!
(每帖分享:误用时间比浪费时间更可惜)