M1芯片的MAC是需要安装Xcode command line tools和gfortran的

2021-12-29 07:47:27 浏览数 (1)

下面是11月实习生的随机投稿

还记得在去《生信技能树》实习之前,我刚拿到Imac不到一星期,配置电脑的时候发现一些R包死活装不上去,其中的代表就是edgeR,做差异分析的主流软件之一。

我的macOS版本

到中山以后,问了永和才知道原来M1芯片是需要安装Xcode command line tools和gfortran的,因此在回学校以后第一时间进行了安装,在随后加以配置成功实现了安装。

但是这几天想要装其他包的时候,又显示compilation failed,同时还有找不到gfortran的问题,但是在这期间我没有进行系统升级等操作。我尝试卸载掉edgeR再重新安装,发现装不上了,离了大谱。

代码语言:javascript复制
make: /opt/R/arm64/bin/gfortran: No such file or directory
make: *** [mvt.o] Error 1
ERROR: compilation failed for package ‘mvtnorm’

于是我又去检查了gfortran,都没有什么问题,反复在终端和R里修改路径也无济于事。

代码语言:javascript复制
wangzhe@wangzhedeiMac ~ % which gfortran     
/opt/homebrew/bin/gfortran

wangzhe@wangzhedeiMac ~ % cat ~/.r/Makevars 
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/opt/gcc/lib/gcc/11

既然R说/opt/R/arm64/bin/gfortran找不到,那我把gfortran移动过去不就找到了?

在检索的时候发现stackoverflow[1]上有个外国网友也遇到了一样的问题(虽然我们的MacOS版本不同),刚好她也是这个思路。

从结果上看,在她移动了gfortran以后仍不能解决问题。最后她的解决办法是deleted everything and started over并且把gfortran目录移动到了R需要的路径,竟解决了问题。

另外,我还找到了思考问题的熊[2]对此问题的思考。

总结下来就是:arm64架构R的坑好多,赶紧换成Intel的x86架构。

在arm64版本下(几乎)所有R包都需要通过编译才能使用。只要涉及到编译,各种不兼容和依赖问题就都来了。这是因为虽然R和Rsutido最新版本都已经支持M1芯片,但是bioconductor还没有支持,这样一来就无法直接安装编译好的R包版本。目前只需要使用Intel 版本的R,就可以避免编译以及随之而来的各种问题。

因此,我重新在R for macOS Developers[3]下载了R,装包问题瞬间都烟消云散,世界又有了颜色。

经此一役,以后我也要秉承“无必要不升级”的法则了。

参考资料参考资料

[1]stackoverflow: https://stackoverflow.com/questions/69639782/installing-gfortran-on-macbook-with-apple-m1-chip-for-use-in-r

[2]思考问题的熊: https://kaopubear.top/blog/2021-07-06-macos-arm64-R-tips/

[3]R for macOS Developers: https://mac.r-project.org/

0 人点赞