如果没有 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 安装有问题。
相关文章:
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- CMake-按正确顺序将项目与C运行时对象文件链接
- 从链接列表c++中删除一个项目
- 有根的二进制搜索树.保留与其父级的链接
- 读取文件的最后一行并输入到链接列表时出错
- 静态数据成员的问题-修复链接错误会导致编译器错误
- node-gyp 在 macOS 上未正确链接库
- 基于boost的程序的静态链接——zlib问题
- 无法链接 CMake 中的本地库
- 内联函数中具有内部链接的全局变量
- 链接阶段在Ubuntu上失败,但在MacOS上失败
- 使用gcc从静态链接的文件中查找可选符号
- 我可以将一个用clang c++11编译的对象与另一个用c++17编译的对象链接起来吗
- 将--whole archive链接器选项与CMake和具有其他库依赖项的库一起使用
- 下面是我为检测链接列表中的循环而制作的代码
- Rcpp:Magick++中的编译器和链接器标志
- 链接动态和静态库 RCPP
- 将 Rcpp 与 C 代码链接,以实现自适应城域拒绝采样
- 将包与Rcpp链接时发生dyn.load错误
- 如果没有 libRcpp.so 文件,如何链接 Rcpp