MacOS10下R4.1.0执行install.packages安装Rcpp包编译报错如何解决
报错根因
你遇到的是旧版MacOS系统搭配R 4.1.x版本时的典型C++编译冲突问题:R默认调用了brew安装的llvm编译器,其标准库头文件和系统内置的math相关头文件路径冲突,导致标准库函数找不到定义。
解决方案
按优先级依次尝试以下操作即可:
优先选择预编译二进制安装(无需本地编译,适合不熟悉C++编译的用户)
打开R控制台执行命令:install.packages("Rcpp", type = "binary")
该命令会直接下载官方预编译好的Rcpp包,跳过本地编译流程,90%以上的同类问题都可以通过该方法解决。若二进制安装不可用,调整R的编译配置
- 先确认已安装Xcode命令行工具,打开终端执行:
xcode-select --install
按照弹窗提示完成安装即可,若提示已安装可直接跳过该步骤。 - 终端执行以下命令创建/打开R的编译配置文件:
mkdir -p ~/.R touch ~/.R/Makevars open ~/.R/Makevars- 在打开的Makevars文件中粘贴以下内容,指定使用系统原生clang编译器规避llvm头文件冲突:
CC=/usr/bin/clang CXX=/usr/bin/clang++ CXX11=/usr/bin/clang++ CXX14=/usr/bin/clang++ CXX17=/usr/bin/clang++ CXX20=/usr/bin/clang++ LDFLAGS=-L/usr/lib -L/usr/local/lib CPPFLAGS=-I/usr/include -I/usr/local/include -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk- 保存关闭文件后重启R,重新执行
install.packages("Rcpp")即可完成安装。
- 先确认已安装Xcode命令行工具,打开终端执行:
内容的提问来源于stack exchange,提问作者William Song
相关产品推荐
相关产品推荐

