1

RPM (Yast を使用) を介して R をインストールしました。

anisha@linux-y3pi:~> locate RInside.so
/usr/lib64/R/library/RInside/lib/libRInside.so
/usr/lib64/R/library/RInside/libs/RInside.so

anisha@linux-y3pi:~> locate Rcpp.so
/usr/lib64/R/library/Rcpp/lib/libRcpp.so
/usr/lib64/R/library/Rcpp/libs/Rcpp.so

rinsidetest.cppコンパイルしたいファイル ( ) には次のものが含まれています。

#include <RInside.h>
#include <Rcpp.h>

int main (int argc, char *argv[])
{
    RInside R (argc, argv);
    return 0;
}

コンパイル方法は次のとおりです。

anisha@linux-y3pi:~> g++ rinsidetest.cpp -I /usr/lib64/R/library/RInside/include/ -I /usr/lib64/R/library/Rcpp/include/ -I /usr/lib64/R/include/ -L /usr/lib64/R/library/RInside/libs/ -L /usr/lib64/R/library/Rcpp/libs/ 

/tmp/ccUfdjgZ.o: In function `main':  
rinsidetest.cpp:(.text+0xb7): undefined reference to `RInside::RInside(int, char const* const*, bool)'  
rinsidetest.cpp:(.text+0xc8): undefined reference to `RInside::~RInside()'  
collect2: ld returned 1 exit status

R 情報:

> sessionInfo() 
R version 2.15.1 (2012-06-22)
Platform: x86_64-unknown-linux-gnu (64-bit)

locale:
 [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C              
 [3] LC_TIME=en_US.UTF-8        LC_COLLATE=en_US.UTF-8    
 [5] LC_MONETARY=en_US.UTF-8    LC_MESSAGES=en_US.UTF-8   
 [7] LC_PAPER=C                 LC_NAME=C                 
 [9] LC_ADDRESS=C               LC_TELEPHONE=C            
[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C       

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

loaded via a namespace (and not attached):
[1] tcltk_2.15.1 tools_2.15.1
> 

RInsideバージョン:0.2.6
Rcppバージョン:0.9.13

この問題の回避策はありますか? それとも、rpm インストールを削除して、ソースからコンパイルしてすべてを開始する必要がありますか?

編集

anisha@linux-y3pi:~/Desktop/abc> g++ rinsidetest.cpp -I /usr/lib64/R/library/RInside/include/ -I /usr/lib64/R/library/Rcpp/include/ -I /usr/lib64/R/include/ -L /usr/lib64/R/library/RInside/lib/ -L /usr/lib64/R/library/Rcpp/lib/ -lRInside

anisha@linux-y3pi:~/Desktop/abc> ls  
a.out  rinsidetest.cpp

anisha@linux-y3pi:~/Desktop/abc> ./a.out   
./a.out: error while loading shared libraries: libRInside.so: cannot open shared object file: No such file or directory

4

2 に答える 2

2

新しいテスト ファイルをドロップした場合

rinsidetest.cpp

準備された Makefile を含むディレクトリに - たとえばexamples/standard/、次のように言うだけです。

make

正しい実行可能ファイルがビルドされます。ディレクトリを埋め込むことにより、実行時のリンクの問題を処理します。

アイデアは、ユーザーが提供された Makefile を取得し、必要に応じて適応/コピーすることです。

于 2012-07-18T10:12:22.297 に答える
2

g++ ビルドの最後に以下を追加してみてください

 -lRInside -lRcpp

あなたが持っているように

g++ rinsidetest.cpp -I /usr/lib64/R/library/RInside/include/ -I /usr/lib64/R/library/Rcpp/include/ -I /usr/lib64/R/include/ -L /usr/lib64/R/library/RInside/libs/ -L /usr/lib64/R/library/Rcpp/libs/ -lRInside -lRcpp

現状では、必要なライブラリにリンクしているようには見えません。名前付きのライブラリがある場合は、libXYZg++ を使用してリンクする必要があり-lXYZますが、まだ行っていないようです。これで問題が解決する場合があります

于 2012-07-18T08:39:02.693 に答える