M1 MacBook Pro安装SolarSpectrum失败:x86_64与arm64架构不兼容
M1 MacBook Pro安装自制R包SolarSpectrum架构不兼容问题解决办法
1. 确认R的运行架构
打开R控制台,执行以下命令检查当前R的架构:
sessionInfo()
确保输出中Running under:对应的架构是aarch64-apple-darwin(arm64原生架构)。如果显示x86_64-apple-darwin,说明你在使用Rosetta转译的x86版本R,需要切换到M1原生的arm64版本R(可从CRAN下载对应架构的安装包重装)。
2. 配置编译环境变量
在终端中执行以下命令,强制编译器生成arm64架构的二进制文件:
export CC="clang -arch arm64" export CXX="clang++ -arch arm64" export FC="gfortran -arch arm64"
如果需要永久生效,可以把这些命令添加到~/.zshrc或~/.bashrc文件中。
3. 重新编译安装包
方法一:在R控制台安装
启动arm64版本的R,执行源码安装命令:
install.packages("/path/to/SolarSpectrum.tar.gz", type = "source")
替换/path/to/为你的包文件实际路径。
方法二:用终端命令安装
在终端中直接执行:
R CMD INSTALL --configure-args="--host=aarch64-apple-darwin" /path/to/SolarSpectrum.tar.gz
4. 验证架构是否正确
安装完成后,找到包的libs目录,执行以下命令检查生成的.so文件架构:
lipo -info /Library/Frameworks/R.framework/Versions/Current/Resources/library/SolarSpectrum/libs/SolarSpectrum.so
正常输出应为Non-fat file: ... is architecture: arm64。
5. 源码脚本适配(若上述步骤无效)
如果包的源码包含configure脚本或Makefile文件,检查是否硬编码了x86_64架构参数:
- 打开
configure脚本,查找-arch x86_64相关内容,替换为-arch arm64,或直接删除指定架构的参数,让编译器自动适配系统架构。 - 若存在
Makefile.in或Makefile.am,同样修改其中的编译架构选项。
内容的提问来源于stack exchange,提问作者gattuso
相关产品推荐
相关产品推荐

