蘋(píng)果的m1芯片已經(jīng)出到了第二代的m1pro/max版本了,不少同學(xué)也是用上了新的macbook,m1芯片的優(yōu)點(diǎn)我們已經(jīng)有目共睹。雖然新版本的R的新版本和cran上的標(biāo)準(zhǔn)包如ggplot2等也已經(jīng)原生的支持了m1。但是Bioconductor的包或者一些github上的包還是需要我們通過(guò)編譯安裝的方式進(jìn)行的。
對(duì)于m1的電腦,當(dāng)我們嘗試用過(guò)BiocManager::install()進(jìn)行安裝時(shí),部分包會(huì)出現(xiàn)提示錯(cuò)誤。下面我以DESeq2包為例,嘗試直接安裝提示錯(cuò)誤:
make: /opt/R/arm64/bin/gfortran: No such file or directory
make: *** [ttest.o] Error 1
ERROR: compilation failed for package ‘ DESeq2’
這里需要我們確認(rèn)好三件事情:
1.正確的安裝好gcc,終端輸入gcc看看是否有改命令,如果沒(méi)有通過(guò)命令brew install gcc安裝;
2.正確的安裝好gfortran,如果沒(méi)有安裝好通過(guò)命令brew install gfortran進(jìn)行安裝。
3.安裝Xcode command line tools,終端輸入xcode-select --install
接下來(lái)就是重點(diǎn)操作了:
首先查看一下gcc的路徑,用 brew list gcc命令進(jìn)行查看:

如我這里可以看到路徑在/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需要和你上面的路徑對(duì)應(yīng)!!VER=-11這個(gè)數(shù)字取決于你的gcc版本??!
將安裝的gfortran的路徑鏈到R目錄:
sudo ln -s /opt/homebrew/bin/gfortran /opt/R/arm64/bin/
這個(gè)時(shí)候我們重新安裝,最好在命令行用R安裝,用rstudio有時(shí)候會(huì)出現(xiàn)莫名錯(cuò)誤!!

就可以順利安裝了。
總結(jié):
導(dǎo)致安裝失敗的原因有幾個(gè):
- 沒(méi)有安裝gcc,mac自帶的是clang大部分的源碼是可以編譯通過(guò)的,但是部分不行;
- 沒(méi)有安裝Xcode command line tools導(dǎo)致缺少了c++的頭文件;
- 沒(méi)有指定使用gcc去編譯,需要配置~/.R/Makevars去實(shí)現(xiàn);
- gfortan沒(méi)有制定,通過(guò)軟鏈解決。