R内部分段故障和链接问题
RInside segmentation fault and linking issue
我正试图通过RInside从linux上的c++调用R,我用gcc 4.5.3版本(Debian 4.5.3-1)从源代码编译了R-2.15.1,我没有使用apt-get-install的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
时,/standard/rinside_sample0.cpp
中的基本hello-world示例会编译!但它没有运行,我得到以下错误
./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
两件事:
-
可复制的示例,请
-
您有一个非标准设置
-
使用1)中的脚本,在标准设置上尝试它,因为Rcpp/RInside就是这样开发和测试的(在Ubuntu/Debian上)
-
Rcpp测试套件现在包含大约350个单元测试函数中的近800个单元测试。这些没有故障,所以问题就在你这边。类似地,RInside在四个子目录
examples/
中有几十个例子。这也是有效的。
这可能和调整Makefile/Makevars文件一样容易,以确保在任何情况下都能获得库。但我们无法判断,因为这里没有可复制的东西。
编辑如果你想链接到libRblas.so
,那么你有一个完全非标准的设置,作为Debian/Ubuuntu的R包,使用外部BLAS。再说一遍,这不是RInside的问题。
我通过在LD_LIBRARY_PATH
的开头添加R安装路径库../R/lib:
解决了这个问题,之后所有的示例都编译并运行了精细的
- 使用jsoncpp库时出现链接问题
- Cmake 链接问题:未定义对 Button::mousePressEvent(QGraphicsSceneMouseE
- 如何将GTest与CMake一起使用?遵循谷歌指南时的链接问题
- 未解决的外部链接问题
- 'make check' GLIBC 运行时的链接问题
- 在树莓派上用libtorch构建程序时的链接问题
- 野牛弹性链接问题
- 与 AWS 开发工具包的链接问题
- Qt & Firebase C++ SDK 在 iOS 上的链接问题
- 链接问题 boost::p ython::numpy.
- 与 32 位共享对象的链接问题
- 在单元测试项目中包括 .c 文件,并从多个 cpp 文件访问它而不会出现链接问题
- 安卓链接问题
- LLVM 传递链接问题:未定义的符号
- Cmake Mac OSX库链接问题:在Linux上进行编译,但在Mac上进行了编译
- 用libclang解析源文件 - 链接问题包括文件
- C / C++链接问题与非常简单的设置
- Zbar 在 vs2015 链接问题
- Vulkan + GLFW + Cmake在Linux环境下的链接问题
- TFS构建由于链接问题而失败