繁体   English   中英

需要“libquadmath”库的 R 包

[英]R package requiring the 'libquadmath' library

我制作了一个 R 包,它使用Rcpp并且需要libquadmath库(使用boost的多精度数)。 在我的个人笔记本电脑(Ubuntu 18.04)上,它“按原样”工作。 win-builder它通过在Makevars文件中设置PKGLIBS = -lquadmathPKGLIBS = $(FLIBS)Makevars 但我也使用这些设置检查了r-hub ,对于 Fedora Linux 发行版(R-devel、clang、gfortran),我失败了。

这个失败是:

/home/docker/R/BH/include/boost/multiprecision/float128.hpp:40:10: fatal error: 'quadmath.h' file not found

所以我担心我的包裹无法通过 CRAN 检查。 要走的路是什么?

您写道,您设置了“ PKGLIBS = -lquadmathPKGLIBS = $(FLIBS) ”。 这些是链接器指令。

你写了那个fatal error: 'quadmath.h' file not found 那是编译器错误

现在,错误来自float128.hpp ,它恰好在我维护的包中,所以我快速浏览了一下:

#if defined(BOOST_MP_USE_FLOAT128)

extern "C" {
#include <quadmath.h>
}

因此,您可以通过尝试确保BOOST_MP_USE_FLOAT128抑制包含。 除此之外,我建议查看多精度包的 Boost 文档。 他们可能有一两个提示。

编辑:我快速浏览了多精度文档,但没有看到任何线索。 对于其他 Boost 库,我经常从一些示例开始,但我对这个不太熟悉。

编辑 2:您的示例也不能完全重现。 我也在这里运行 Ubuntu, Boost float128.cpp 示例通过g++ -o fl128 fl128.cpp -lquadmath (另存为fl128.cpp )在我的盒子上运行良好。 您可能需要在configure脚本中进行一些发现,以了解 RHub 上的其他 Linux 系统失败的原因。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM