Linux超级计算机上R包arrow安装失败:已装g++-13仍需C++20编译器
解决R包arrow安装时的C++20编译器报错问题
问题分析
g++-13本身是支持C20标准的,报错大概率是R编译包时未默认启用C20,或者超级计算机环境的模块配置、编译参数存在干扰。
解决方案步骤
1. 临时指定编译选项安装
在R控制台直接设置编译参数,强制启用C++20标准后再安装:
Sys.setenv(CXXFLAGS="-std=c++20") install.packages("arrow")
如果遇到链接类错误,可补充链接参数:
Sys.setenv(CXXFLAGS="-std=c++20", LDFLAGS="-lstdc++") install.packages("arrow")
2. 修改R全局配置文件(永久生效)
不想每次手动设置的话,可修改R的编译配置文件:
- 先在终端定位R的配置目录:
Rscript -e 'path.expand("~/.R")'
- 在该目录下创建或编辑
Makevars文件,添加以下内容:
CXX=g++-13 CXXFLAGS=-std=c++20
保存后重启R,再执行install.packages("arrow")即可。
3. 检查超级计算机模块环境
超级计算机通常用模块管理工具管控软件版本,确保你加载的gcc模块是g++-13,且无旧版本干扰:
- 查看当前加载的模块:
module list
- 若有旧版本gcc,先卸载再加载正确版本:
module unload gcc module load gcc/13
重新启动R后再尝试安装。
4. 从源码编译时明确指定C++标准
如果上述方法都无效,尝试直接从GitHub源码编译并指定C++20:
remotes::install_github("apache/arrow", configure.args="--with-cxx-std=20")
内容的提问来源于stack exchange,提问作者Hausdorff
相关产品推荐
相关产品推荐

