我正在使用Rcpp开发一个R库。
这个包有2个外部依赖项,我编译了它,并且在我的路径中使用*.so*
文件,遵循以下结构:
my_R_package
src
include
linux
dependency1.so
dependency1.so.0
...
dependency2.so
dependency2.so.0
...
Makevars
在我的Makevars
文件中,我有PKG_CPPFLAGS
和PKG_LIBS
vars,并带有正确的标记。
我的问题是我无法使用-L./include/linux,因为ld不理解.
路径,而-rpath
与$ORIGIN
结合使用不起作用,因为R安装包在R目录中生成.*so
,并且找不到依赖项。
因此,我看到的唯一解决方案是将我的依赖项文件复制到/usr/local/lib
这样的公共路径中。我怎样才能做到这一点?我可以使用Makefile
代替Makevars
吗?
答案 0 :(得分:3)
您的包中不能包含动态库,因为
ldd
没有看到这些目录所以是的,我建议使用这些库的外部包装,然后让R包依赖它们。
否则,如果编译静态,则可以包装这些库。