M1 Pro芯片Mac在R中安装car包时遭遇共享对象加载失败
问题
在R中执行install.package('car')安装car包失败,提示依赖包加载失败,依赖版本信息如下:
There are binary versions available but the source versions are later: binary source needs_compilation minqa 1.2.4 1.2.5 TRUE nloptr 2.0.0 2.0.3 TRUE quantreg 5.88 5.94 TRUE lme4 1.1-28 1.1-30 TRUE car 3.0-12 3.1-1 FALSE
尝试单独安装minqa包(install.packages('minqa'))仍失败,报错信息:
Error: package or namespace load failed for ‘minqa’ in dyn.load(file, DLLpath = DLLpath, ...): 无法载入共享目标对象‘/Library/Frameworks/R.framework/Versions/4.0/Resources/library/00LOCK-minqa/00new/minqa/libs/minqa.so’:: dlopen(/Library/Frameworks/R.framework/Versions/4.0/Resources/library/00LOCK-minqa/00new/minqa/libs/minqa.so, 0x0006): symbol not found in flat namespace '_bobyqa_' 错误: 载入失败 停止执行 ERROR: loading failed * removing ‘/Library/Frameworks/R.framework/Versions/4.0/Resources/library/minqa’ Warning in install.packages : installation of package ‘minqa’ had non-zero exit status
设备信息:搭载M1 Pro芯片的MacBook,系统为macOS Ventura 13.0,已安装Xcode和gfortran-ARM-12.1-Monterey,无其他特殊设置。
补充环境变量检查结果:
执行Sys.getenv("PATH")输出:
> Sys.getenv("PATH") [1] "/usr/local/bin:/System/Cryptexes/App/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/Apple/usr/bin:/Users/hansondai/Applications/quarto/bin:/Library/TeX/texbin:/usr/texbin:/Applications/RStudio.app/Contents/MacOS/quarto/bin:/Applications/RStudio.app/Contents/MacOS"
执行Sys.which("stats.dll")输出:
> Sys.which("stats.dll") stats.dll ""
实际安装多个R包时都遇到“无法加载共享对象”的错误,求解决方法。
解决方法
1. 优先安装二进制版本包
M1芯片Mac编译源码包易出现架构不兼容问题,强制安装二进制版本:
install.packages("car", type = "binary")
如果car的二进制版本依赖旧版minqa等包,同样指定type="binary"安装依赖:
install.packages(c("minqa", "nloptr", "quantreg", "lme4"), type = "binary")
2. 升级R版本至兼容ARM架构的版本
当前使用的R 4.0.x版本较旧,在M1 Mac的Ventura系统上存在架构适配缺陷,建议升级到R 4.2及以上版本(原生支持ARM架构)。
3. 配置编译环境路径
确保gfortran的路径被R正确识别,在R中执行以下命令设置环境变量:
Sys.setenv(PATH = paste("/usr/local/gfortran/bin", Sys.getenv("PATH"), sep = ":")) Sys.setenv(FC = "/usr/local/gfortran/bin/gfortran") Sys.setenv(F77 = "/usr/local/gfortran/bin/gfortran")
设置完成后重新尝试安装源码包:
install.packages("minqa", type = "source")
4. 清理旧编译缓存
删除R包安装时生成的锁文件和临时缓存:
- 前往路径
/Library/Frameworks/R.framework/Versions/4.0/Resources/library/,删除所有带00LOCK-前缀的文件夹 - 重启R后再尝试安装操作
5. 确认Xcode命令行工具配置
确保Xcode命令行工具已正确安装并授权:
xcode-select --install sudo xcodebuild -license accept
内容的提问来源于stack exchange,提问作者Hanso
相关产品推荐
相关产品推荐

