[英]R package requiring the 'libquadmath' library
我制作了一个 R 包,它使用Rcpp
并且需要libquadmath
库(使用boost
的多精度数)。 在我的个人笔记本电脑(Ubuntu 18.04)上,它“按原样”工作。 在win-builder
它通过在Makevars
文件中设置PKGLIBS = -lquadmath
或PKGLIBS = $(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 = -lquadmath
或PKGLIBS = $(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.