Rcpp包报错与Linux系统GLIBCXX版本兼容性问题求助
Rcpp依赖GLIBCXX_3.4.26缺失问题解决步骤
报错根源
报错核心是系统的libstdc++.so.6库缺少GLIBCXX_3.4.26版本,导致R无法加载编译好的Rcpp共享库——和你尝试的Rcpp版本无关,即使旧版Rcpp,若编译时用了高版本编译器,依然会依赖该库版本。
解决方法
方法1:升级系统libstdc++库(优先推荐,适用于有系统权限的情况)
先检查当前系统已有的GLIBCXX版本:
strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBCXX
若确实无3.4.26,执行升级命令:
sudo apt update && sudo apt install --only-upgrade libstdc++6
升级完成后重启R,再运行代码即可。
方法2:临时指定高版本libstdc++路径(适用于无系统权限的服务器环境)
- 找到包含
GLIBCXX_3.4.26的libstdc++.so.6文件(可从同架构新系统、conda环境或其他R编译环境复制) - 在R中临时设置库加载路径,再加载Rcpp或运行ggplot代码:
Sys.setenv(LD_LIBRARY_PATH="/path/to/your/new/lib/folder:$LD_LIBRARY_PATH") library(Rcpp) # 再运行你的ggplot代码
方法3:重新编译适配当前系统的Rcpp
卸载现有Rcpp后,强制用系统当前编译器重新编译:
# 卸载旧版Rcpp remove.packages("Rcpp") # 设置编译选项,绑定系统现有libstdc++ Sys.setenv(CXXFLAGS="-std=c++11 -L/usr/lib/x86_64-linux-gnu") # 从源码安装Rcpp install.packages("Rcpp", type="source")
编译完成后,Rcpp会适配当前系统的libstdc++版本,不再要求更高的GLIBCXX版本。
内容的提问来源于stack exchange,提问作者Rami
相关产品推荐
相关产品推荐

