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