如何在macOS(含Apple Silicon)上从源码编译R?
在macOS 11+上从源码编译R的完整指南(含Intel/ARM差异)
一、解决你当前的M1 Mac编译错误
你已经安装了GNU Fortran但configure仍提示找不到,核心原因是ARM架构下Fortran的默认路径没被configure自动识别,手动指定路径即可:
先确认GNU Fortran的安装路径:
which gfortran用Homebrew安装的话,M1/M2 Mac的路径通常是
/opt/homebrew/bin/gfortran,Intel Mac则是/usr/local/bin/gfortran。重新执行
configure并指定Fortran编译器路径:./configure FC=/opt/homebrew/bin/gfortran如果仍有问题,可补充指定Fortran 77编译器和优化参数:
./configure FC=/opt/homebrew/bin/gfortran F77=/opt/homebrew/bin/gfortran FFLAGS="-O2"
另外,务必确认Xcode命令行工具已正确安装并配置:
# 未安装的话执行这个 xcode-select --install # 检查安装路径是否正确 xcode-select -p
正常返回应为/Applications/Xcode.app/Contents/Developer。
二、macOS 11+编译R的通用步骤(Intel/ARM通用)
1. 安装必备依赖
- Xcode及命令行工具:提供C/C++编译器,是编译R的基础。
- GNU Fortran:R的部分核心模块依赖Fortran,必须安装。
- 可选依赖库:提升R的功能支持,比如网络、图像处理,用Homebrew一键安装:
brew install curl libpng jpeg libtiff openmpi
2. 获取R源码
- 稳定版:从CRAN下载对应版本,比如:
curl -LO https://cran.r-project.org/src/base/R-4/R-4.3.3.tar.gz - 每日快照:你使用的补丁版源码:
curl -LO https://stat.ethz.ch/R/daily/R-patched.tar.gz
3. 解压并进入源码目录
tar -xvf R-patched.tar.gz && cd R-patched
4. 配置编译选项
可指定安装路径(比如--prefix=/usr/local/R-patched),方便后续管理;也可根据需求添加功能开关(比如--enable-R-shlib编译动态库)。
5. 编译并安装
用多线程加速编译(-j后接CPU核心数,sysctl -n hw.ncpu自动获取核心数):
make -j$(sysctl -n hw.ncpu) sudo make install
三、Intel与ARM(Apple Silicon)Mac的编译差异
1. 依赖路径差异
- Intel Mac:Homebrew安装的工具/库默认在
/usr/local/bin和/usr/local/opt - ARM Mac:Homebrew安装的工具/库默认在
/opt/homebrew/bin和/opt/homebrew/opt,所以configure时必须手动指定这些路径(比如前面的Fortran路径)
2. 架构识别与编译选项
- ARM Mac:
configure会自动识别arm64架构,无需额外添加--enable-macos-arm64;如果需要交叉编译x86_64版本,可添加--host=x86_64-apple-darwin20(Big Sur对应darwin20)。 - Intel Mac:默认识别x86_64架构,兼容性更成熟,几乎无需额外架构相关配置。
3. 性能与兼容性
- ARM Mac:编译后的R会针对M1/M2的ARM架构优化,运行效率更高;但部分老旧R包可能暂不支持arm64,不过编译R本身无问题。
- Intel Mac:编译流程更稳定,遇到的兼容性问题更少,适合依赖较多老旧包的场景。
四、其他问题排查
- 如果
configure提示缺少某类依赖(比如libcurl),可手动指定依赖路径:# ARM Mac ./configure --with-libcurl=/opt/homebrew/opt/curl # Intel Mac ./configure --with-libcurl=/usr/local/opt/curl - 编译时出现链接错误,检查环境变量
PATH是否包含Homebrew的bin路径,确保依赖库能被找到。
内容的提问来源于stack exchange,提问作者Mikael Jagan
相关产品推荐
相关产品推荐

