2021-04-20 R包安装中Error: C++14 standard requested but CXX14 is not defined

搞了一天多,终于搞好了,查了很多资料,这个应该是编译出错!需要高版本GCC,在这里我用的GCC7.4.0

说说解决方法吧,参考https://blog.csdn.net/Damonyugg/article/details/112481346
但是代码不一样,因为要根据自己的环境来调整代码,千万不要复制,复制是错的

centos7环境下

修复方法
在终端运行以下命令

第一步

mkdir ~/.R
vim ~/.R/Makevars
CXX14FLAGS=-O3 -march=native -mtune=native -fPIC
CXX14=g++
##主要就是在home目录下,建一个.R 的目录;
##然后在这个.R目录下建一个文件,里边键入两行内容,在这个位置大家应该都一样,不同的地方在第二步

第二步,指定gcc编译器版本7

## 需要在home下运行以下命令,先别运行,先别运行,先别运行,往下看,
## 其中“/gcc/7.3.0”是你自己gcc的位置,不要硬搬复制,具体位置查看方法我在后方图片中详细说明了
## 切记!切记!切记!“/gcc/7.3.0/”是你自己gcc的位置,下边只是个例子,大部分人运行都会错的

 export PATH=/gcc/7.3.0/bin/:$PATH 
 export LD_LIBRARY_PATH=/gcc/7.3.0/lib64/:$LD_LIBRARY_PATH

注:
查看自己gcc版本
路径:which gcc
版本:gcc -v

我用的学校的(上交大)服务器,服务器上预编译了很多可用module(模块),
我根据这些模块加载高版本编译语言gcc 7.4.0,一步一步截图记录。
如果自己的计算机,可以自己安装高版本gcc并根据教程进行编译,在此不再赘述。
简要步骤:查看模块module avail--> 加载模块 module load XXX(模块名称)--> 查看加载模块module list --> 查看模块位置which gcc --> 修改export内容

#查看预装了那些模块
module avail

#选用并加载模块
module load gcc/7.4.0-gcc-4.8.5  #我选的这个gcc版本

#查看模块是否被加载
module list

##查看gcc位置
which gcc #会优先显示加载模块的地址

##查看gcc版本
gcc -v

用module avail查看

image.png

可以看到有很多版本的gcc

image.png

我选的是gcc/7.4.0-gcc-4.8.5,然后module load,再然后查看是否load成功,即module list

image.png

查看位置,用于替换上边/gcc/7.3.0/

image.png

因此,所以,so,我个人上述命令是

export PATH=/lustre/opt/cascadelake/linux-centos7-x86_64/gcc-4.8.5/gcc-7.4.0-4kdemuwlzds2ofpkkz7yytgi7kyojuvz/bin/:$PATH 
#注意观察仔细哦,我的地址这么长,最后是包含gcc的bin,实际情况根据你自己的地方来,最好cd过去看一下,看看bin的位置,如下图

 export LD_LIBRARY_PATH=/lustre/opt/cascadelake/linux-centos7-x86_64/gcc-4.8.5/gcc-7.4.0-4kdemuwlzds2ofpkkz7yytgi7kyojuvz/lib64/:$LD_LIBRARY_PATH
#理所当然,我的第二句就变成这样了,千万别硬搬复制,自己根据自己地址来
image.png

/lustre/opt/cascadelake/linux-centos7-x86_64/gcc-4.8.5/gcc-7.4.0-4kdemuwlzds2ofpkkz7yytgi7kyojuvz/就是我gcc模块安装目录,包括bin和lib64.
我折腾了好久,都是复制别人命令,唉,折腾了一天,记录一下,下次不再犯错,不要再复制粘贴

你可能感兴趣的:(2021-04-20 R包安装中Error: C++14 standard requested but CXX14 is not defined)