Travis CI使用我的使用C ++,Rcpp和RcppArmadillo的R软件包生成错误

这是我的R包的GitHub存储库

我已经能够从Windows,MacOS和Linux群集上的源安装此软件包, devtools::install_github("ntthung/ldsr")

我正在尝试集成Travis CI,并且在构建时出现以下错误

错误:dyn.load中的“ ldsr”的包或名称空间加载失败(文件,DLLpath = DLLpath,...):无法加载共享对象“ / tmp / RtmpK7z3X6 / Rinst2ef05609c709 / 00LOCK-ldsr / 00new / ldsr / libs / ldsr.so':/ tmp / RtmpK7z3X6 / Rinst2ef05609c709 / 00LOCK-ldsr / 00new / ldsr / libs / ldsr.so:未定义的符号:dpotrf_

我发现该dpotrf_图书馆属于libflame所以我Rload.R用te命令制作了文件Sys.setenv("PKG-LIBS"="-llibflame")并将以下内容添加到.travis.yml

script:
    - Rscript Rload.R
    - R CMD build . --compact-vignettes=gs+qpdf
    - R CMD check *tar.gz --as-cran

但是我仍然遇到同样的错误。

我的包使用Rcpp和RcppArmadillo。

请帮忙!谢谢。

德克·埃德比布特尔

这看起来像是没有适当的基本错误,例如src/Makevars其他人那里已经产生的错误 RcppArmadillo.package.skeleton()

因此,作为第一个基本修复尝试,从RcppArmadillo复制文件inst / skeleton / Makevars,其中包含

## With R 3.1.0 or later, you can uncomment the following line to tell R to 
## enable compilation with C++11 (where available)
##
## Also, OpenMP support in Armadillo prefers C++11 support. However, for wider
## availability of the package we do not yet enforce this here.  It is however
## recommended for client packages to set it.
##
## And with R 3.4.0, and RcppArmadillo 0.7.960.*, we turn C++11 on as OpenMP
## support within Armadillo prefers / requires it
CXX_STD = CXX11

PKG_CXXFLAGS = $(SHLIB_OPENMP_CXXFLAGS) 
PKG_LIBS = $(SHLIB_OPENMP_CXXFLAGS) $(LAPACK_LIBS) $(BLAS_LIBS) $(FLIBS)

您确实在Windows变体中进行了复制,Makevars.win只是忘记了主要的一个。

并且dpotrf_是标准的LAPACK符号,因此对于经验丰富的用户来说,错误是显而易见的错误(并且这个问题可能也是重复的)。另外,使用RcppArmadillo查看600多个其他CRAN软件包的来源通常也是一个好主意-它们都在GitHub上的user下cran

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章