You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在HPC集群运行R的INLA模型时出现CXXABI_1.3.8未找到错误

HPC集群中R-INLA包运行报错:找不到CXXABI_1.3.8的解决办法

问题背景

按官方教程在HPC集群安装R的INLA包后,运行测试模型时出现版本依赖报错,更换GCC版本后问题仍存在,但该模型在本地电脑可正常运行。

报错信息

/storage/homefs/'username'/R/x86_64-pc-linux-gnu-library/4.1/INLA/bin/linux/64bit/inla.mkl: /storage/homefs/'username'/R/x86_64-pc-linux-gnu-library/4.1/INLA/bin/linux/64bit/first/libstdc++.so.6: version `CXXABI_1.3.8' not found (required by /software.el7/software/ICU/69.1-GCCcore-10.3.0/lib64/libicuuc.so.69)

测试脚本

library(INLA)

n = 100; a = 1; b = 1; tau = 100
z = rnorm(n)
eta = a + b*z

scale = exp(rnorm(n))
prec = scale*tau
y = rnorm(n, mean = eta, sd = 1/sqrt(prec))

data = list(y=y, z=z)
formula = y ~ 1+z
result = inla(formula, family = "gaussian", data = data)
summary(result)

解决方法

1. 让INLA优先使用集群兼容的libstdc++库

INLA自带的libstdc++.so.6版本偏旧,和集群ICU库依赖冲突。可以通过设置环境变量,让系统优先加载集群GCC对应的库:

  • 在终端启动R前执行:
    export LD_LIBRARY_PATH=/software.el7/software/GCCcore/10.3.0/lib64:$LD_LIBRARY_PATH
    
  • 或者在R脚本开头添加:
    Sys.setenv(LD_LIBRARY_PATH = paste0("/software.el7/software/GCCcore/10.3.0/lib64:", Sys.getenv("LD_LIBRARY_PATH")))
    
    注意路径需匹配集群上GCCcore-10.3.0的实际lib64位置。

2. 禁用INLA自带的内置库

通过环境变量强制INLA使用系统已安装的兼容库:

Sys.setenv(INLA_DONT_USE_BUILTIN_LIBS = "TRUE")
library(INLA)

3. 基于集群环境重新编译安装INLA

如果上述方法无效,加载集群对应版本的GCC(如GCCcore/10.3.0)后,从源码编译安装INLA:

install.packages("INLA", repos=c(getOption("repos"), INLA="https://inla.r-inla-download.org/R/stable"), dep=TRUE)

编译过程会自动适配集群的库版本,彻底解决依赖问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 09:24:27