R升级依赖后出现unable to load shared object错误如何解决?
问题根因
两个报错均为R包编译时使用的运行时库与当前系统环境不匹配导致,OpenSSL升级时连带更新了系统底层编译链相关依赖,触发了旧版本编译的R包的兼容问题。
可行解决方案
方案1:重新编译关联依赖包(优先尝试)
- 首先通过Homebrew安装报错缺失的gcc8运行时库:
brew install gcc@8 - 打开(或新建)R本地配置文件
~/.R/Makevars,添加以下内容指定编译器路径:
CC=/usr/local/opt/gcc@8/bin/gcc-8 CXX=/usr/local/opt/gcc@8/bin/g++-8 CXX11=/usr/local/opt/gcc@8/bin/g++-8 FLIBS=-L/usr/local/opt/gcc@8/lib/gcc/8
- 重启R后从源码重新安装报错的两个底层依赖包:
install.packages(c("promises", "data.table"), type = "source") - 安装完成后重新加载chromVAR、GENOVA验证即可。
方案2:回滚依赖包版本
如果重新编译仍报错,直接安装适配R3.5.1的历史版本依赖:
# 先安装remotes包如果未安装 if (!require("remotes")) install.packages("remotes") remotes::install_version("promises", version = "1.1.1") remotes::install_version("data.table", version = "1.12.8")
方案3:升级R版本(长期解决方案)
你当前使用的R3.5.1与MacOS Big Sur兼容性较差,直接升级到R4.2及以上版本,重新安装所有R包,可彻底解决这类底层依赖不匹配问题。
内容的提问来源于stack exchange,提问作者Hiroyuki Kato
相关产品推荐
相关产品推荐

