You need to enable JavaScript to run this app. OSX Mojave下R加载依赖mgcv的包报_libintl_dgettext符号缺失错误
优惠活动
大模型
产品
解决方案
定价
更多

OSX Mojave下R加载依赖mgcv的包报_libintl_dgettext符号缺失错误

OSX Mojave 环境下 mgcv 依赖类R包加载故障说明

在Mac OS X 10.14.6(Mojave)系统上运行R时,所有依赖mgcv的R包均会触发动态库加载失败故障,复现代码与对应报错如下:

library(Seurat)
Error: package or namespace load failed for ‘Seurat’ in dyn.load(file, DLLpath = DLLpath, ...):
 unable to load shared object '/Users/akh/Documents/R_lib_4/mgcv/libs/mgcv.so':
  dlopen(/Users/akh/Documents/R_lib_4/mgcv/libs/mgcv.so, 6): Symbol not found: _libintl_dgettext
  Referenced from: /Users/akh/Documents/R_lib_4/mgcv/libs/mgcv.so
  Expected in: /usr/local/Cellar/r/4.0.4_1/lib/R/lib/libR.dylib
 in /Users/akh/Documents/R_lib_4/mgcv/libs/mgcv.so
基础环境与前置排查信息
  • 当前R运行版本为4.0.4 (2021-02-15) "Lost Library Book",运行平台为x86_64-apple-darwin18.7.0 (64位)
  • 已通过Homebrew安装0.21稳定版gettext,对应动态库libintl.8.dylib位于/usr/local/Cellar/gettext/0.21/lib路径下,执行brew info gettext的输出详情为:
brew info gettext
gettext: stable 0.21 (bottled)
GNU internationalization (i18n) and localization (l10n) library
https://www.gnu.org/software/gettext/
/usr/local/Cellar/gettext/0.21 (1,959 files, 19MB) *
  Poured from bottle on 2021-03-18 at 12:03:19
From: https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/gettext.rb
License: GPL-3.0-or-later
故障根因

mgcv包编译阶段完成了与Homebrew安装的gettext库的动态链接,但R运行时的动态库搜索路径未包含gettext的库目录。加载mgcv.so时,系统无法定位到_libintl_dgettext符号的所属库,会顺着默认加载顺序在已加载的libR.dylib中查找该符号,因libR中无对应符号定义,最终触发加载失败。

修复方案
  • 临时快速验证方案:加载目标包前手动指定gettext库路径,即可完成正常加载,适合临时排查使用:
    Sys.setenv(DYLD_LIBRARY_PATH = "/usr/local/Cellar/gettext/0.21/lib:$DYLD_LIBRARY_PATH")
    library(Seurat)
    
  • 永久生效方案:将动态库路径配置写入R的启动配置文件,重启R后自动加载配置,无需每次手动执行。打开用户目录下的.Rprofile文件(不存在则新建),添加以下内容:
    # 解决gettext动态库缺失导致的mgcv包加载报错
    Sys.setenv(DYLD_LIBRARY_PATH = paste0("/usr/local/Cellar/gettext/0.21/lib:", Sys.getenv("DYLD_LIBRARY_PATH")))
    
  • 长期稳定方案:卸载现有mgcv包,从源码重新编译安装,编译时显式指定gettext库路径,从根源上解决动态链接路径依赖问题:
    remove.packages("mgcv")
    install.packages("mgcv", configure.args = "--with-gettext=/usr/local/Cellar/gettext/0.21")
    

内容的提问来源于stack exchange,提问作者akh22

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.29 05:54:00