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)也安装良好..

但是,当我使用给定的 RInside 时makefile,编译的基本 hello world 示例/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 在四个examples/子目录中有几十个示例。这也有效。

这可能就像调整 Makefile / Makevars 文件一样简单,以确保在所有情况下都能获得您的库。但我们不能说,因为这里没有可重现的东西。

编辑 如果你想链接,libRblas.so那么你有一个完全非标准的设置作为 Debian / Ubuntu 的 R 包,因为使用外部 BLAS。同样,不是 RInside 问题。

于 2012-10-12T17:44:16.257 回答
1

我通过将 R 安装路径库添加../R/lib:到开头来解决问题,LD_LIBRARY_PATH之后所有示例都编译并运行良好

于 2012-10-12T18:12:12.450 回答