首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Linux上用g++编译g++程序

在Linux上用g++编译g++程序
EN

Stack Overflow用户
提问于 2012-07-18 08:34:14
回答 2查看 2.3K关注 0票数 1

我已经通过RPM安装了R(与Yast一起).

代码语言:javascript
复制
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)包含:

代码语言:javascript
复制
#include <RInside.h>
#include <Rcpp.h>

int main (int argc, char *argv[])
{
    RInside R (argc, argv);
    return 0;
}

下面是我编译它的方法:

代码语言:javascript
复制
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资料:

代码语言:javascript
复制
> 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安装,并通过从源代码编译启动一切?

编辑

代码语言:javascript
复制
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
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-07-18 08:39:02

尝试将以下内容添加到g++构建的末尾

代码语言:javascript
复制
 -lRInside -lRcpp

所以你有

代码语言:javascript
复制
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的库时,您需要使用g++和-lXYZ链接到它,这似乎还没有完成。这可能会解决问题。

票数 2
EN

Stack Overflow用户

发布于 2012-07-18 10:12:22

如果您删除新的测试文件

代码语言:javascript
复制
rinsidetest.cpp

进入包含准备好的Makefile的目录--例如examples/standard/,那么您只需说

代码语言:javascript
复制
make

并建立正确的可执行文件。它通过嵌入目录来处理运行时链接问题。

这样做的目的是让用户使用提供的Makefile,并根据需要修改/复制。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11537313

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档