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

安装非CRAN包BoostMLR时出现非零退出状态问题求助

BoostMLR包安装加载失败的问题排查与解决建议

问题描述

安装BoostMLR包时出现加载失败,多次尝试安装并检查过工作目录和安装路径后仍未解决,请求错误解读和解决建议。

安装代码

install.packages("/programs/apps/BoostMLRpackage/BoostMLR_2.0.1.tar.gz",repos = NULL, dependencies = TRUE)

控制台输出

Installing package into ‘/home/kramerb2/R/x86_64-pc-linux-gnu-library/4.2’
(as ‘lib’ is unspecified)
* installing *source* package ‘BoostMLR’ ...
** using staged installation
** libs
g++ -std=gnu++14 -I"/opt/R-4.2.2/lib64/R/include" -DNDEBUG  -I'/opt/R-4.2.2/lib64/R/library/Rcpp/include' -I'/opt/R-4.2.2/lib64/R/library/RcppArmadillo/include' -I/usr/local/include   -fpic  -g -O2  -c BoostMLR.cpp -o BoostMLR.o
g++ -std=gnu++14 -I"/opt/R-4.2.2/lib64/R/include" -DNDEBUG  -I'/opt/R-4.2.2/lib64/R/library/Rcpp/include' -I'/opt/R-4.2.2/lib64/R/library/RcppArmadillo/include' -I/usr/local/include   -fpic  -g -O2  -c RcppExports.cpp -o RcppExports.o
g++ -std=gnu++14 -shared -L/opt/R-4.2.2/lib64/R/lib -L/usr/local/lib64 -o BoostMLR.so BoostMLR.o RcppExports.o -L/opt/R-4.2.2/lib64/R/lib -lR
installing to /home/kramerb2/R/x86_64-pc-linux-gnu-library/4.2/00LOCK-BoostMLR/00new/BoostMLR/libs
** R
** data
** inst
** byte-compile and prepare package for lazy loading
** help
*** installing help indices
** building package indices
** testing if installed package can be loaded from temporary location
Error: package or namespace load failed for ‘BoostMLR’ in dyn.load(file, DLLpath = DLLpath, ...):
 unable to load shared object '/home/kramerb2/R/x86_64-pc-linux-gnu-library/4.2/00LOCK-BoostMLR/00new/BoostMLR/libs/BoostMLR.so':
  /home/kramerb2/R/x86_64-pc-linux-gnu-library/4.2/00LOCK-BoostMLR/00new/BoostMLR/libs/BoostMLR.so: undefined symbol: dpotrf_
Error: loading failed
Execution halted
ERROR: loading failed
* removing ‘/home/kramerb2/R/x86_64-pc-linux-gnu-library/4.2/BoostMLR’
* restoring previous ‘/home/kramerb2/R/x86_64-pc-linux-gnu-library/4.2/BoostMLR’
Warning in install.packages :
  installation of package ‘/programs/apps/BoostMLRpackage/BoostMLR_2.0.1.tar.gz’ had non-zero exit status

错误解读

undefined symbol: dpotrf_ 表明编译生成的BoostMLR.so共享库找不到dpotrf_符号。dpotrf_是LAPACK库中的Cholesky分解函数,BoostMLR依赖的RcppArmadillo需要链接LAPACK/BLAS库,但当前编译链接阶段仅添加了-lR参数,未显式链接LAPACK/BLAS,导致符号缺失。

解决建议

  • 修改包编译配置:若能修改BoostMLR源码,在包目录的src文件夹下创建或编辑Makevars文件,添加以下内容:
    PKG_LIBS = $(LAPACK_LIBS) $(BLAS_LIBS) $(FLIBS)
    
    此配置会让R自动链接系统的LAPACK和BLAS库。
  • 安装时指定链接库:无法修改源码的话,安装时通过configure.args参数手动指定链接库:
    install.packages("/programs/apps/BoostMLRpackage/BoostMLR_2.0.1.tar.gz", 
                     repos = NULL, 
                     dependencies = TRUE,
                     configure.args = "--with-lapack-lib=-llapack --with-blas-lib=-lblas")
    
    部分系统可能使用openblas替代blas,需根据实际情况调整参数。
  • 安装系统依赖库:确保系统已安装LAPACK和BLAS开发库:
    • Debian/Ubuntu系统:
      sudo apt-get install liblapack-dev libblas-dev
      
    • RHEL/CentOS系统:
      sudo yum install lapack-devel blas-devel
      

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 05:29:55