gpt4 book ai didi

c++ - RInside 段错误和链接问题

转载 作者:行者123 更新时间:2023-11-27 23:21:13 26 4
gpt4 key购买 nike

我正在尝试通过 RInside 在 linux 上从 c++ 调用 R,我使用 gcc 版本 4.5.3 (Debian 4.5.3-1) 从源代码编译 R-2.15.1,我没有使用 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 时,/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. 请提供可重现的例子

  2. 您有一个非标准设置

  3. 使用 1) 中的脚本,在标准设置上尝试它,因为这就是 Rcpp/RInside 的开发和测试方式(在 Ubuntu/Debian 上)

  4. Rcpp 测试套件现在包含来自大约 350 个单元测试函数的近 800 个单元测试。这些不会出现 seg.fault,所以问题就在你这边。同样,RInside 在四个 examples/ 子目录中有数十个示例。这也有效。

这可能就像调整 Makefile/Makevars 文件一样简单,以确保您在所有情况下都能获得您的库。但我们无法判断,因为这里没有任何可复制的内容。

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

关于c++ - RInside 段错误和链接问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12864113/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com