Mac OS X下Rcpp编译错误:-mtune=选项不支持'core2'参数
解决ARM64 Mac上Rcpp编译报错
unsupported argument 'core2' to option '-mtune=' 问题根源
你在ARM64架构的Mac(M系列芯片)上编译Rcpp代码时,clang编译器报错不支持-mtune=core2参数——这个参数是针对Intel x86架构的CPU优化选项,不适用于ARM64芯片。大概率是之前使用Intel Mac时配置的编译参数未更新,或者R的默认编译配置残留了x86相关设置。
解决方案
1. 永久修改编译配置(推荐)
编辑~/.R/Makevars文件(如果没有则创建),移除或替换-mtune=core2参数:
# 替换为适合ARM64的编译参数 CXXFLAGS += -O3 -mcpu=native -std=gnu++17 CCFLAGS += -O3 -mcpu=native
-mcpu=native会自动适配当前Mac的ARM芯片,也可以根据具体芯片指定(比如-mcpu=apple-m1、-mcpu=apple-m2)。
2. 临时覆盖编译参数(单次生效)
在R会话中先运行以下命令,再执行sourceCpp:
Sys.setenv(CXXFLAGS = "-O3 -mcpu=native -std=gnu++17") sourceCpp("bug.cpp")
3. 确认R的架构匹配
运行以下命令检查R是否为ARM64版本:
Sys.getenv("R_ARCH")
如果返回/arm64则正常;若返回/x86_64,说明安装了Intel版本的R,需要重新下载安装ARM64版本的R。
内容的提问来源于stack exchange,提问作者Rob Bradley
相关产品推荐
相关产品推荐

