3

私はC++にはかなり慣れていませんが、Rに多くの時間を費やしてきました.RcppArmadilloを使用しようとしています.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.

何か案は?ありがとう。

4

3 に答える 3

3

エラーを参照してください。 ld: library not found for -lgfortran

RcppArmadillo には次のものが含まれているため、Fortran ライブラリをインストールする必要があります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 の Simon のページだと思いますが、私自身は OS X ユーザーではありません。疑問がある場合は、OS X 10.9 へのアップグレードで発生したさまざまな破損に関する多数のディスカッション スレッドがある r-sig-mac で質問してください。

于 2013-11-03T22:38:14.033 に答える
2

私はあなたと同じ問題に遭遇しました。http://cran.r-project.org/bin/macosx/tools/にアクセスして、自分のコンピューターにgfortran-4.2.3.pkg をインストールし、sourceCppを使用すると、動作します。これを試すことができます。これは、私が今見つけた最も簡単な方法です。

参照する最新のページはhttps://mac.r-project.org/tools/にあります

于 2015-02-14T19:09:46.140 に答える