从Intel迁移至Apple Silicon后解决R包安装问题
解决Apple Silicon Mac上R包编译与CRAN镜像选择问题
一、修复编译时库链接找不到的问题
编辑~/.R/Makevars文件(不存在则新建),添加以下内容,统一适配Apple Silicon架构的编译与链接参数,无需逐个包排查库路径:
# Apple Silicon 架构适配 CFLAGS += -arch arm64 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk CXXFLAGS += -arch arm64 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk LDFLAGS += -arch arm64 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk # 指定系统框架搜索路径 LDFLAGS += -F/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks
-arch arm64确保编译产物适配Apple Silicon架构,避免混用Intel版本的编译资源-isysroot明确系统SDK路径,让编译器能定位到系统核心框架(如CoreFoundation)-F参数直接指定系统框架的搜索目录,彻底解决ld: framework not found类链接错误
保存文件后重启R,重新编译安装需要源码编译的包即可。
二、禁用CRAN镜像选择的X11 GUI窗口,改用控制台数字选择
编辑~/.Rprofile文件(不存在则新建),添加以下代码:
# 强制使用控制台交互选择CRAN镜像,关闭GUI弹窗 options(menu.graphics = FALSE) # 可选:固定CRAN镜像,彻底跳过选择步骤 options(repos = c(CRAN = "https://mirrors.tuna.tsinghua.edu.cn/CRAN/"))
options(menu.graphics = FALSE)会让R在需要选择镜像时,切换为控制台数字选择模式,不再弹出X11窗口- 若不想每次手动选择镜像,直接通过
repos参数固定一个就近的CRAN镜像地址即可
保存文件后重启R,更新包时就会按配置方式执行。
内容的提问来源于stack exchange,提问作者Michael Roswell
相关产品推荐
相关产品推荐

