linux - 在 Linux 上用 g++ 编译 RInside 程序

标签 linux r g++ rcpp rinside

我已经通过 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

最佳答案

尝试将以下内容添加到您的 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

就目前而言,您似乎没有链接到所需的库。当您有一个名为 libXYZ 的库时,您需要使用带有 -lXYZ 的 g++ 链接到它,您似乎还没有这样做。这可能会解决问题

关于linux - 在 Linux 上用 g++ 编译 RInside 程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11537313/

相关文章:

mysql - 加密 MySQL 中所有数据的最佳方法是什么

linux - 使用 bash 脚本根据给定条件使用 sed 提取位置特定记录

R dplyr 链基团 by into 函数

r - 如何在不增加内存消耗的情况下绑定(bind)data.table?

c++ - g++ 找不到已安装的库

c++ - 为什么 std::regex 不是有效类型?

C Unix Xcode 再次出现错误

php (rar) 我想通过 php(在 dedi 服务器上)noob 在 Ubuntu(linux)上使用 rar rar 文件夹

r - r中的矩阵图

c++ - std::enable_if 有条件地编译一个成员函数