搞了一天多,终于搞好了,查了很多资料,这个应该是编译出错!需要高版本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.
我折腾了好久,都是复制别人命令,唉,折腾了一天,记录一下,下次不再犯错,不要再复制粘贴
网友评论