0

RInsideを介してLinux上のc++からRを呼び出そうとしています。gccバージョン4.5.3(Debian 4.5.3-1)を使用してソースからR-2.15.1をコンパイルしました。apt-getを使用するためのsudo権限がありません。インストール。私はOpenBlasとシステムに最適化されたlapackを使用しています。blasおよびlapackライブラリは、多くのscalapackアプリケーションで正常に機能します

Rをインストールしました

./configure --with-blas="-I/lib/OpenBLAS-v0.2.3-0/xianyi-OpenBLAS-48f075c/install/include -L/lib/OpenBLAS-v0.2.3-0/xianyi-OpenBLAS-48f075c/install/lib -lopenblas -lgfortran" --with-lapack="/usr/lib/liblapack.so -lgfortran" --enable-BLAS-shlib=yes --enable-R-shlib --enable-R-static-lib --prefix= . 

インストールして正常に実行され、エラーなしでmake checkを実行しました。また、すべてのパッケージ(RcppおよびRInside)も正常にインストールされました。

ただし、指定されたRInsidemakefileを使用すると、コンパイルからの基本的なhelloworldの例が/standard/rinside_sample0.cppコンパイルされます。しかし、それは実行されず、次のエラーが発生します

./rinside_sample0: error while loading shared libraries: libRblas.so: cannot open shared object file: No such file or directory

ファイルlibRblas.soが存在し、R/libフォルダ内にあります。

g ++コマンドを使用して手動でリンクしようとすると、makeファイルが作成するか、次のようにリンクします。セグメンテーション違反が発生します。

/R/lib/libRblas.so ./hello_world
Segmentation fault

編集:これは、サンプルのmakeファイルがサンプルをコンパイルしようとする方法です(これは正常にコンパイルされます)が、上記の欠落したlibRblas.soエラーで実行されません

g++ -I/nfs/user03/jimmie21/libs/lib64/R/include -I/nfs/user03/jimmie21/libs/lib64/R/library/Rcpp/include -I/nfs/user03/jimmie21/libs/lib64/R/library/RInside/include -g -O2 -Wall -I/usr/local/include   hello_world.cpp  -L/nfs/user03/jimmie21/libs/lib64/R/lib -lR  -L/nfs/user03/jimmie21/libs/lib64/R/lib -lRblas -L/nfs/user03/jimmie21/libs/lib64/R/lib -lRlapack -L/nfs/user03/jimmie21/libs/lib64/R/lib -lRblas -L/nfs/user03/jimmie21/libs/lib64/R/library/Rcpp/lib -lRcpp -Wl,-rpath,/nfs/user03/jimmie21/libs/lib64/R/library/Rcpp/lib -L/nfs/user03/jimmie21/libs/lib64/R/library/RInside/lib -lRInside -Wl,-rpath,/nfs/user03/jimmie21/libs/lib64/R/library/RInside/lib -o hello_world
4

2 に答える 2

3

いくつかのこと:

  1. 再現可能な例をお願いします

  2. 非標準のセットアップがあります

  3. 1) のスクリプトを使用して、Rcpp / RInside の開発とテスト (Ubuntu / Debian で) を行う標準設定で試してください。

  4. Rcpp テスト スイートには現在、約 350 の単体テスト関数からの約 800 の単体テストが含まれています。これらは seg.fault ではないため、問題はユーザー側にあります。同様に、RInside には 4 つのexamples/サブディレクトリに多数の例があります。これも機能します。

Makefile / Makevars ファイルを微調整して、すべての場合にライブラリを確実に取得するのと同じくらい簡単かもしれません。しかし、ここには再現可能なものがないため、わかりません。

編集 リンクしたい場合libRblas.soは、Debian / UbuntuのRパッケージが外部BLASを使用するため、完全に非標準のセットアップになります。繰り返しますが、RInside の問題ではありません。

于 2012-10-12T17:44:16.257 に答える
1

../R/lib:Rインストールパスlibを先頭に追加して問題を修正したLD_LIBRARY_PATH後、すべての例をコンパイルして正常に実行しました

于 2012-10-12T18:12:12.450 に答える