如何重置R调用clang的路径?编译sf包时路径错误致失败
解决R编译sf包时clang路径不匹配的问题
我之前也碰到过一模一样的情况——R调用了旧账户路径下的clang,导致编译sf包失败。其实本质就是R的编译环境变量里记录了错误的路径,试试下面这几个方法就能搞定:
方法一:临时修正(单次生效)
直接在R控制台里手动指定正确的clang路径,设置完就能马上编译:
# 设置C编译器路径 Sys.setenv(CC="/Users/realaccountname/opt/clang+llvm-4.0.1-x86_64-apple-macosx10.9.0/bin/clang") # 设置C++编译器路径,sf包编译也会用到 Sys.setenv(CXX="/Users/realaccountname/opt/clang+llvm-4.0.1-x86_64-apple-macosx10.9.0/bin/clang++") # 然后重新安装sf包 install.packages("sf", type = "source")
方法二:永久配置(每次启动R都生效)
不想每次都手动输命令的话,就把路径写到R的环境配置文件里:
- 打开终端,执行命令创建/编辑R的环境配置文件:
touch ~/.Renviron && open ~/.Renviron
- 在弹出的文本编辑器里添加这两行:
CC="/Users/realaccountname/opt/clang+llvm-4.0.1-x86_64-apple-macosx10.9.0/bin/clang" CXX="/Users/realaccountname/opt/clang+llvm-4.0.1-x86_64-apple-macosx10.9.0/bin/clang++"
- 保存文件后重启R,再安装sf包就会自动用新路径了。
方法三:排查系统层面的路径问题
如果上面两种方法都没效果,可能是系统的PATH变量里还留着旧路径:
- 在终端里检查当前PATH:
echo $PATH
- 要是发现旧的
/Users/user_name/opt/...路径在里面,就编辑你的shell配置文件(比如~/.zshrc或者~/.bash_profile,看你用的是zsh还是bash),把旧路径替换成真实路径。 - 编辑完后执行
source ~/.zshrc(对应你的配置文件)让变更生效,再重启R试试。
另外,顺便确认一下Xcode命令行工具是不是最新的,有时候旧版本也会搞出编译问题:
xcode-select --install
内容的提问来源于stack exchange,提问作者user2953274
相关产品推荐
相关产品推荐

