我正在尝试通过 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