苹果的m1芯片已经出到了第二代的m1pro/max版本了,不少同学也是用上了新的macbook,m1芯片的优点我们已经有目共睹。虽然新版本的R的新版本和cran上的标准包如ggplot2等也已经原生的支持了m1。但是Bioconductor的包或者一些github上的包还是需要我们通过编译安装的方式进行的。
对于m1的电脑,当我们尝试用过BiocManager::install()
进行安装时,部分包会出现提示错误。下面我以DESeq2包为例,尝试直接安装提示错误:
make: /opt/R/arm64/bin/gfortran: No such file or directory
make: *** [ttest.o] Error 1
ERROR: compilation failed for package ‘ DESeq2’
这里需要我们确认好三件事情:
1.正确的安装好gcc,终端输入gcc看看是否有改命令,如果没有通过命令brew install gcc
安装;
2.正确的安装好gfortran,如果没有安装好通过命令brew install gfortran
进行安装。
3.安装Xcode command line tools,终端输入xcode-select --install
接下来就是重点操作了:
首先查看一下gcc的路径,用 brew list gcc
命令进行查看:
如我这里可以看到路径在/opt/homebrew/Cellar/gcc/11.2.0_3
终端输入如下命令:
mkdir ~/.R
touch ~/.R/Makevars
随后编辑Makevars文件,vi ~/.R/Makevars
VER=-11
CC=gcc$(VER)
CXX=g++$(VER)
CXX11=g++$(VER)
CXX14=g++$(VER)
CXX17=g++$(VER)
CFLAGS=-mtune=native -g -O2 -Wall -pedantic -Wconversion
CXXFLAGS=-mtune=native -g -O2 -Wall -pedantic -Wconversion
FLIBS=-L/opt/homebrew/Cellar/gcc/11.2.0_3
注意:最后的FLIBS需要和你上面的路径对应!!VER=-11
这个数字取决于你的gcc版本!!
将安装的gfortran的路径链到R目录:
sudo ln -s /opt/homebrew/bin/gfortran /opt/R/arm64/bin/
这个时候我们重新安装,最好在命令行用R安装,用rstudio有时候会出现莫名错误!!
就可以顺利安装了。
总结:
导致安装失败的原因有几个:
- 没有安装gcc,mac自带的是clang大部分的源码是可以编译通过的,但是部分不行;
- 没有安装Xcode command line tools导致缺少了c++的头文件;
- 没有指定使用gcc去编译,需要配置~/.R/Makevars去实现;
- gfortan没有制定,通过软链解决。
网友评论