无管理员权限的Mac OS Sierra下R包安装clang版本不匹配问题
我来帮你搞定这个R包编译报错的问题——你遇到的make: x86_64-apple-darwin13.4.0-clang: No such file or directory错误,核心原因是你的R 3.4.2版本默认期望的clang目标平台是x86_64-apple-darwin13.4.0,但你本地安装的clang 4.0.1用的是更新的x86_64-apple-darwin16.7.0目标,加上没有管理员权限无法修改系统级工具链,得通过用户级配置来适配。
下面是具体的解决步骤:
第一步:确认本地clang的路径和版本
先在终端里运行以下命令,获取你的clang实际路径和版本信息:which clang clang --version记下输出的clang路径,比如可能是
/Users/yourusername/local/bin/clang(替换成你自己的实际路径)。第二步:创建用户级R编译配置文件
在你的用户主目录下,创建.R/Makevars文件(如果没有.R文件夹,先运行mkdir ~/.R创建)。然后用文本编辑器打开这个文件,添加以下内容:CC=/Users/yourusername/local/bin/clang CXX=/Users/yourusername/local/bin/clang++ CFLAGS="-target x86_64-apple-darwin13.4.0 -Wall" CXXFLAGS="-target x86_64-apple-darwin13.4.0 -Wall"这里的关键是通过
-target参数强制clang使用R期望的darwin13.4.0目标平台,让R的构建系统识别到匹配的编译器标识。第三步:验证配置是否生效
重启R(或者RStudio),然后运行以下代码检查环境变量:Sys.getenv(c("CC", "CXX", "CFLAGS", "CXXFLAGS"))确认输出的路径和参数和你在
Makevars里设置的一致,说明配置已经生效。第四步:重新安装目标R包
先清理之前失败的安装缓存(如果有的话),然后重新安装:remove.packages("RCurl") install.packages("RCurl")
这个方法不需要管理员权限,所有配置都只作用于你的用户账户,不会影响系统其他程序。之前尝试devtools没解决,是因为devtools默认还是依赖系统的编译环境配置,而通过~/.R/Makevars可以直接覆盖R的编译参数,精准匹配所需的目标平台版本。
内容的提问来源于stack exchange,提问作者anon82

