繁体   English   中英

如果没有libRcpp.so文件,如何链接Rcpp?

[英]How can I link Rcpp if there is no libRcpp.so file?

尝试编译C ++程序时,我链接了R文件,但Rcpp没有libRcpp.so文件。

这是R代码(我省略了c ++):

#include <R.h>
#include <Rcpp.h>   
#include <RInside.h>

**** some c++ code*****

RInside R(argc, argv);

    string cmd = "tmpf <- tempfile('nums');"
                 "png(tmpf);"
                 "counts <- table(a,b,c,d,e);"
                 "barplot(counts, main='My Plot', xlab='Letters');"
                 "dev.off();"
                 "tmpf";

    string tmpfile = R.parseEval(cmd);

    cout << "Using plot " << tmpfile << endl;
    unlink(tmpfile.c_str());

然后我用g ++编译:

g++ -I/home/robert/R/x86_64-pc-linux-gnu-library/3.2/Rcpp/include  
-I/home/robert/R/x86_64-pc-linux-gnu-library/3.2/RInside/include 
-I/usr/share/R/include -L/usr/lib/R/lib -lR 
-L/home/robert/R/x86_64-pc-linux-gnu-library/3.2/Rcpp/libs -lRcpp 
-L/home/robert/R/x86_64-pc-linux-gnu-library/3.2/RInside/lib -lRInside 
Frequency-Analyzer.cpp

该错误显示为:

/usr/bin/ld: cannot find -lRcpp
collect2: error: ld returned 1 exit status

这是因为-L/home/robert/R/x86_64-pc-linux-gnu-library/3.2/Rcpp/libs不会导致"libRcpp.so"文件。 但是,我的目录中没有lib文件,因为它不再支持链接。 那我怎么可能用RInside编译呢?

您似乎正在使用类似于rinside_sample15.cpp的东西 我可以使用提供的和经过测试的Makefile轻松构建它:

edd@don:~/git/rinside/inst/examples/standard(master)$ make -f GNUmakefile 
    rinside_sample15
ccache g++ -I/usr/share/R/include -I/usr/local/lib/R/site-library/Rcpp/include \
   -I/usr/local/lib/R/site-library/RInside/include \
   -g -O2 -fstack-protector-strong -Wformat -Werror=format-security \
   -Wdate-time -D_FORTIFY_SOURCE=2 -g -O3 -Wall -pipe -Wno-unused \
   -pedantic -Wall    rinside_sample15.cpp  -Wl,--export-dynamic \
   -fopenmp  -L/usr/lib/R/lib -lR -lpcre -llzma -lbz2 -lz -lrt -ldl \
   -lm  -lblas -llapack  -L/usr/local/lib/R/site-library/RInside/lib \
   -lRInside -Wl,-rpath,/usr/local/lib/R/site-library/RInside/lib \
   -o rinside_sample15
edd@don:~/git/rinside/inst/examples/standard(master)$
edd@don:~/git/rinside/inst/examples/standard(master)$ ./rinside_sample15 
Can now use plot in /tmp/xyplot56466f672e73.png
edd@don:~/git/rinside/inst/examples/standard(master)$ 

该路径因您而异,并且您可能没有ccache但它仍然可以工作-或您的R安装有问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM