ARM架构macOS Big Sur下从源码编译R包报错问题咨询
问题根因
你遇到的报错核心来自两个问题:
- 你当前安装的R是Intel架构版本(sessionInfo可看到平台为x86_64-apple-darwin17.0),而你装的Homebrew是ARM架构版本(路径在/opt/homebrew),两者架构不兼容,R没法调用brew安装的gcc编译器
- 你之前拼凑的Makevars配置没有写全编译器的绝对路径,且硬编码了gcc版本和路径,版本不匹配或gcc升级后路径变动就会失效
修复步骤
第一步:先删除旧的错误配置
打开终端执行以下两行命令,删掉之前错误的Makevars文件,恢复默认配置状态:
rm -f ~/.R/Makevars rm -f $R_HOME/etc/Makevars
第二步:二选一选择适配方案
方案A:更换为ARM原生版R(推荐,M芯片设备运行速度更快,后续兼容性更好)
- 卸载当前Intel版R:打开访达→应用程序,将R程序拖到废纸篓即可
- 下载安装Apple Silicon架构的R安装包,版本建议选择4.2及以上(你当前用的4.0.5版本过老,原生不支持M系列芯片)
- 确认brew安装的gcc实际版本:终端执行
ls /opt/homebrew/bin/gcc*,查看输出中gcc后面跟随的版本号,比如输出包含gcc-12,就将后续配置里的VER值改为-12 - 新建正确的Makevars配置:
- 终端执行
mkdir -p ~/.R,如果文件夹已存在会自动跳过 - 执行
open ~/.R,在弹出的文件夹中新建纯文本文件,命名为Makevars - 粘贴以下内容,根据你实际的gcc版本修改第一行的VER值:
VER=-12 CC=/opt/homebrew/bin/gcc$(VER) CXX=/opt/homebrew/bin/g++$(VER) CXX11=/opt/homebrew/bin/g++$(VER) CXX14=/opt/homebrew/bin/g++$(VER) CXX17=/opt/homebrew/bin/g++$(VER) FC=/opt/homebrew/bin/gfortran$(VER) F77=/opt/homebrew/bin/gfortran$(VER) FLIBS=-L`/opt/homebrew/bin/gfortran$(VER) -print-file-name=libgfortran.dylib | xargs dirname` CFLAGS=-mtune=native -g -O2 CXXFLAGS=-mtune=native -g -O2 - 终端执行
- 保存文件后重启R,执行
install.packages("igraph", type = "source")即可正常安装。
方案B:保留当前Intel版R
- 安装Intel架构版本的Homebrew,终端执行对应安装命令即可
- 用Intel版brew安装gcc:
arch -x86_64 /usr/local/bin/brew install gcc - 确认gcc版本:终端执行
ls /usr/local/bin/gcc*,查看gcc后的版本号修改后续VER值 - 新建Makevars配置,步骤同方案A,内容替换为:
VER=-12 CC=/usr/local/bin/gcc$(VER) CXX=/usr/local/bin/g++$(VER) CXX11=/usr/local/bin/g++$(VER) CXX14=/usr/local/bin/g++$(VER) CXX17=/usr/local/bin/g++$(VER) FC=/usr/local/bin/gfortran$(VER) F77=/usr/local/bin/gfortran$(VER) FLIBS=-L`/usr/local/bin/gfortran$(VER) -print-file-name=libgfortran.dylib | xargs dirname` CFLAGS=-mtune=native -g -O2 CXXFLAGS=-mtune=native -g -O2 - 重启R后即可正常安装源码包。
报错原因说明
make: gfortran-11: No such file or directory:要么是你实际安装的gcc版本不是11,要么是配置中没有写对gfortran的完整路径,R搜索不到对应程序configure: error: C compiler cannot create executables:架构不兼容,你给Intel版R指定了ARM架构的gcc编译器,编译出的文件无法在Intel架构的R环境下运行,因此检测直接失败。
内容的提问来源于stack exchange,提问作者JankoWTF
相关产品推荐
相关产品推荐

