在 Mac 上构建 Rcpp 包时 dyn.load(dll_copy_file) 出错

问题描述 投票:0回答:1

我正在 Mac 上构建自己的 Rcpp 包(名称:RUtilities)。但是执行的时候遇到了如下错误

devtools::document()

** checking absolute paths in shared objects and dynamic libraries
─  DONE (RUtilities)
Error in dyn.load(dll_copy_file) : 
  unable to load shared object '/var/folders/70/0x058vd10ts57r4ck5j2j3s00000gn/T//RtmpIXnrlU/pkgload13d793cdb33ea/RUtilities.so':
  dlopen(/var/folders/70/0x058vd10ts57r4ck5j2j3s00000gn/T//RtmpIXnrlU/pkgload13d793cdb33ea/RUtilities.so, 0x0006): symbol not found in flat namespace '__RUtilities_test'

我目前的尝试:

  1. 删除
    src
    文件夹中的.so、.o文件并重新运行代码。
  2. 删除
    /var/folders/70/
    文件夹中的RUtilities.so文件。

但是,错误仍然存在。

这个问题对我来说很奇怪,因为同样的包可以在我的Linux服务器上正确安装。

我怀疑R版本有问题,因为我的Linux服务器使用R3.6,而我的mac使用R4.1。当 R 版本发生变化时,我是否应该修改

Makevars
文件?我的
Makevars
文件现在看起来像这样:

PKG_LIBS = $(LAPACK_LIBS) $(BLAS_LIBS) $(FLIBS)
PKG_CPPFLAGS = -I../inst/include/


CXX_STD = CXX11
PKG_LIBS += $(shell ${R_HOME}/bin/Rscript -e "RcppParallel::RcppParallelLibs()")

此外,我的 Mac 使用 Apple M1 芯片。是这个芯片有问题吗?

欢迎任何建议!谢谢!

r rcpp r-package
1个回答
0
投票

我在新 Mac 上运行 devtools::load_all() 时遇到了非常类似的错误。对我来说,添加 recompile=T 解决了它。

devtools::load_all(path="./", recompile=T)

如果有帮助的话。

© www.soinside.com 2019 - 2024. All rights reserved.