安装R包stringr失败求助:缺失CXXABI_1.3.8版本依赖
stringr/stringi 包加载失败问题解决
问题原因
系统默认的libstdc++.so.6版本过低,缺少stringi运行所需的CXXABI_1.3.8版本标识。stringi依赖较新的C标准库实现,而当前环境的libstdc版本不满足编译/运行要求,导致无法加载共享对象文件。
解决方法
1. 集群环境:加载高版本gcc模块
如果是在集群系统中,优先通过模块管理工具切换到高版本gcc:
- 查看可用gcc模块:
module avail gcc - 加载gcc 7.x及以上版本(gcc 5+开始支持CXXABI_1.3.8):
module load gcc/7.3.0 - 重新编译安装
stringi和stringr,添加参数避免系统旧库干扰:install.packages("stringi", configure.args = "--disable-pkg-config") install.packages("stringr")
2. 有权限环境:手动更新libstdc++.so.6
若拥有系统或用户目录权限,可手动替换/添加高版本标准库:
- 检查当前libstdc++支持的版本:
strings /lib64/libstdc++.so.6 | grep CXXABI - 找到高版本gcc安装目录下的
libstdc++.so.6(例如/usr/local/gcc-7.3.0/lib64/),将其复制到用户自定义库目录(如~/lib/) - 设置环境变量让R优先加载该库:
export LD_LIBRARY_PATH=~/lib:$LD_LIBRARY_PATH - 启动R重新安装并加载包。
3. 源码编译时指定标准库路径
如果上述方法无效,编译stringi时直接指定高版本libstdc++的路径:
install.packages("stringi", configure.args = c("--disable-pkg-config", "LDFLAGS=-L/usr/local/gcc-7.3.0/lib64"))
注意替换路径为你实际的高版本gcc lib64目录。
内容的提问来源于stack exchange,提问作者Jinggggggg
相关产品推荐
相关产品推荐

