Как я могу связать Rcpp, если нет файла libRcpp.so?
При попытке скомпилировать мою программу на 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 тогда??
1 ответ
Решение
Вы, кажется, используете что-то похожее, скажем, на 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.