R 中的错误与 Rcpp 和 RcppArmadillo 使用 sourceCpp()



我对C++很陌生,但花了很多时间在R上。 我正在尝试使用Rcpp犰狳,其中.cpp文件的来源是使用sourceCpp函数。 我的示例代码来自

http://lists.r-forge.r-project.org/pipermail/rcpp-devel/2013-June/006150.html

并显示在下面:

#include <RcppArmadillo.h>
using namespace Rcpp ;
// [[Rcpp::depends(RcppArmadillo)]]
// [[Rcpp::export]]
arma::colvec rowSumsRcppArmadillo(NumericMatrix x){
  arma::mat X = arma::mat(x.begin(), x.nrow(), x.ncol(), false);
  return arma::sum(X, 1);
}

我安装了 Rcpp 和 RcppArmadillo 软件包,并成功使用 Rcpp(没有 RcppArmadillo)来集成C++功能。 但是,对于RcppArmadillo,我收到以下错误:

> sourceCpp("rowSums.cpp")
ld: warning: directory not found for option '-L/usr/local/lib/gcc/i686-apple-    darwin8/4.2.3/x86_64'
ld: warning: directory not found for option '-L/usr/local/lib/x86_64'
ld: warning: directory not found for option '-L/usr/local/lib/gcc/i686-apple-darwin8/4.2.3'
ld: library not found for -lgfortran
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [sourceCpp_76327.so] Error 1
...
Error in sourceCpp("rowSums.cpp") : 
Error 1 occurred building shared library.

有什么想法吗? 谢谢。

请参阅错误:ld: library not found for -lgfortran

您需要安装 Fortran 库,因为 RcppArmadillo 在 src/Makevars 中具有:

PKG_LIBS=`$(R_HOME)/bin/Rscript -e "Rcpp:::LdFlags()"` 
          $(LAPACK_LIBS) $(BLAS_LIBS) $(FLIBS)

您可以通过R获得Lapack和Blas,但需要Fortran库。请参阅 R 的 OS X 文档,了解从何处获取此信息;我相信这个地方是西蒙在AT&T的页面,但我自己不是OS X用户。如有疑问,请在 r-sig-mac 上询问,那里也有许多关于升级到 OS X 10.9 时发生的各种损坏的讨论线程。

我遇到了同样的问题。我只是去 http://cran.r-project.org/bin/macosx/tools/并安装 gfortran-4.2.3.pkg 在我的计算机上,然后使用 sourceCpp,然后它可以工作。你可以试试这个,这是我现在找到的最简单的方法。

要咨询的最新页面位于 https://mac.r-project.org/tools/

如果在安装适用于 Mac 的推荐 Fortran 库之一后,像我这样的其他人在"构建"和"检查"犰狳项目时遇到类似的问题,您需要按照 [此处的说明]1:https://thecoatlessprofessor.com/programming/cpp/r-compiler-tools-for-rcpp-on-macos/

我试图更改外壳中的LDFLAGS环境变量,但它没有通过。但是,在 ~/中正确设置它。R/Makevars似乎有效。

最新更新