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

在R Studio中使用brms包编译Stan模型时遇链接错误求助

问题描述

在Windows 10系统下,使用R 4.2.2、brms 2.18.0运行以下brms模型时出现编译错误,该模型在旧电脑可正常运行,新电脑报错,且已重装R、RStudio、rtools仍未解决:

模型代码:

model <- brm(bf(formula),
             data   = df_region,
             prior = bpriors,
             warmup = 1000,
             iter   = 5000,
             chains = 2,
             cores  = 4)

核心错误信息:

Error in compileCode(f, code, language = language, verbose = verbose) : 
  C:\rtools42\x86_64-w64-mingw32.static.posix\bin/ld.exe: file47887957199b.o:file47887957199b.cpp:(.text$_ZN3tbb8internal26task_scheduler_observer_v3D0Ev[_ZN3tbb8internal26task_scheduler_observer_v3D0Ev]+0x1d): undefined reference to `tbb::internal::task_scheduler_observer_v3::observe(bool)'
...
Error in sink(type = "output") : invalid connection

解决方案

1. 修正Makevars.win配置

错误源于TBB(线程构建模块)库链接失败,需调整.R/Makevars.win文件:

  • 找到路径C:/Users/ozgur.alptekin/OneDrive - insidemedia.net/Documents/.R/Makevars.win
  • 打开文件添加以下内容:
    STAN_LIBS += -ltbb
    
  • 保存后重启RStudio,重新运行模型。

2. 临时禁用并行编译

绕过TBB并行依赖,先尝试单核心编译:
在运行模型前执行:

options(mc.cores = 1)

再执行原模型代码。

3. 更新brms与rstan版本

旧版本brms(2.18.0)可能与R 4.2.2、rtools42存在兼容性问题:

  • 更新brms:
    install.packages("brms", dependencies = TRUE)
    
  • 更新rstan(brms依赖库):
    install.packages("rstan", dependencies = TRUE)
    

更新完成后重启RStudio重试。

4. 检查rtools42环境变量

确保rtools42路径正确加入系统环境变量:

  • 打开系统环境变量,确认PATH包含C:\rtools42\usr\bin和C:\rtools42\x86_64-w64-mingw32.static.posix\bin
  • 若未添加,手动添加后重启电脑,再打开RStudio尝试编译。

5. 清理Stan编译缓存

旧编译缓存可能导致冲突,执行以下代码清理:

rm(list = ls())
gc()
rstan::rstan_options(auto_write = FALSE)
unlink(file.path(tempdir(), "rstan"), recursive = TRUE)

清理后重新运行模型。

内容的提问来源于stack exchange,提问作者Ozgur Alptekın

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 04:37:05