我正在 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'
我目前的尝试:
src
文件夹中的.so、.o文件并重新运行代码。/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 芯片。是这个芯片有问题吗?
欢迎任何建议!谢谢!
我在新 Mac 上运行 devtools::load_all() 时遇到了非常类似的错误。对我来说,添加 recompile=T 解决了它。
devtools::load_all(path="./", recompile=T)
如果有帮助的话。