在构建之前处理依赖关系并安装R库

时间:2016-05-19 17:11:13

标签: r rcpp

我正在使用Rcpp开发一个R库。

这个包有2个外部依赖项,我编译了它,并且在我的路径中使用*.so*文件,遵循以下结构:

my_R_package
    src
        include
            linux
                dependency1.so
                dependency1.so.0
                ...
                dependency2.so
                dependency2.so.0
                ...
        Makevars

在我的Makevars文件中,我有PKG_CPPFLAGSPKG_LIBS vars,并带有正确的标记。

我的问题是我无法使用-L./include/linux,因为ld不理解.路径,而-rpath$ORIGIN结合使用不起作用,因为R安装包在R目录中生成.*so,并且找不到依赖项。

因此,我看到的唯一解决方案是将我的依赖项文件复制到/usr/local/lib这样的公共路径中。我怎样才能做到这一点?我可以使用Makefile代替Makevars吗?

1 个答案:

答案 0 :(得分:3)

您的包中不能包含动态库,因为

  • CRAN不允许您上传对象
  • 动态链接器ldd没有看到这些目录

所以是的,我建议使用这些库的外部包装,然后让R包依赖它们。

否则,如果编译静态,则可以包装这些库。