R包在Linux下编译不通过 CentOS/Redhat R包使用最新的gcc编译

38 篇文章 7 订阅

CentOS/Redhat R包使用最新的gcc编译
R包在Linux下编译不通过,原因是gcc版本太低怎么办?

一些有C++代码的R包可能会用到一些新的C++特性,需要C++11或者C++14。这个问题通常在CentOS/红帽系统上出现,因为系统稳定的要求,这个系列的系统它的C++版本很低。 但请读者前往注意了别自己编译新版本的gcc,然后替换掉系统的。这种操作我试过几次,系统基本上就崩掉了。

正确的解决方式是安装独立的gcc,通过环境变量引用和使用它。

在Root用户下操作:

yum install centos-release-scl
yum install devtoolset-9

然后在你使用R的用户下操作:

#If you use your non-root account to install packages, change /root to /home/your_id in the following command

mkdir -p /root/.R
vi /root/.R/Makevars 

将下面的内容写入打开的文件,然后保存:

CXX11=/opt/rh/devtoolset-9/root/usr/bin/g++ -std=c++11 -fPIC
CXX14=/opt/rh/devtoolset-9/root/usr/bin/g++ -std=c++14 -fPIC

如果没有root权限,可以通过conda来安装新版本的gcc,c++等:

conda install gcc_linux-64
conda install gxx_linux-64

加上conda-forge通道也可以。

另外可以一键安装常用的编译器:

conda install -c conda-forge compilers

安装完成后记得添加环境变量:

export CC=/path/to/anaconda/bin/x86_64-conda_cos6-linux-gnu-gcc
export CXX=/path/to/anaconda/bin/x86_64-conda_cos6-linux-gnu-g++

如果是R包编译,修改前面提到的Makevars文件即可。

如果使用的是miniconda,这个文件的内容可能就是这样的了:

CXX11=~/miniconda3/bin/x86_64-conda-linux-gnu-g++ -std=c++11 -fPIC
CXX14=~/miniconda3/bin/x86_64-conda-linux-gnu-g++ -std=c++14 -fPIC

这样就可以愉快地安装包了:

install.packages(“igraph”)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值