我正在尝试在 Mac OS High Sierra 上安装软件包 nloptr 以使用许多不错的软件包,例如 lme4,并且我在 Anaconda 中使用 RStudio 和 R 3.4.2。我也安装了NLopt(从NLopt网站下载,不是开发版。我也安装了Xcode命令行工具。但是我仍然无法安装nloptr,并得到这个
Error: package or namespace load failed for ‘nloptr’ in dyn.load(file, DLLpath = DLLpath, ...):
unable to load shared object '/Users/lambda/anaconda3/lib/R/library/nloptr/libs/nloptr.so':
dlopen(/Users/lambda/anaconda3/lib/R/library/nloptr/libs/nloptr.so, 6): Symbol not found: _nlopt_add_equality_mconstraint
Referenced from: /Users/lambda/anaconda3/lib/R/library/nloptr/libs/nloptr.so
Expected in: flat namespace
in /Users/lambda/anaconda3/lib/R/library/nloptr/libs/nloptr.so
我已经在网上搜索了要做什么,并且确实将安装 NLopt 的路径添加到/etc/ldpaths
文件中的 LD_LIBRARY_PATH 中,但我仍然得到同样的错误。是的,我遇到了与Trouble installation nloptr package on R 3.3.0中相同的问题,但我没有找到适用的解决方案,因为提出这个问题的人自己解决了这个问题,我不知道他什么时候说的他说“以root身份安装”。任何人都可以帮忙吗?
另外,在使用 CMake 安装 NLopt 时,我得到了类似的东西,这发生在许多不同的功能上:
In file included from f77api.c:103:
./f77funcs.h:57:14: warning: 'nlopt_minimize_constrained' is deprecated
[-Wdeprecated-declarations]
*info = nlopt_minimize_constrained((nlopt_algorithm) *algorithm,
^
./nlopt.h:348:35: note: 'nlopt_minimize_constrained' has been explicitly marked
deprecated here
int maxeval, double maxtime) NLOPT_DEPRECATED;
^
./nlopt.h:320:43: note: expanded from macro 'NLOPT_DEPRECATED'
# define NLOPT_DEPRECATED __attribute__((deprecated))
^
这就是没有加载库的原因吗?
顺便说一句,我已经安装了 Rcpp 并对其进行了更新。Rcpp 在我的电脑上工作。
更新:我将默认的 C 和 C++ 编译器更改为从 R 项目下载的 clang4。我再次尝试安装,并得到一个不同的错误:
Error: package or namespace load failed for ‘nloptr’ in dyn.load(file, DLLpath = DLLpath, ...):
unable to load shared object '/Users/lambda/anaconda3/lib/R/library/nloptr/libs/nloptr.so':
dlopen(/Users/lambda/anaconda3/lib/R/library/nloptr/libs/nloptr.so, 6): Library not loaded: @rpath/libnlopt.0.dylib
Referenced from: /Users/lambda/anaconda3/lib/R/library/nloptr/libs/nloptr.so
Reason: image not found
Error: loading failed
我试图告诉 R 图书馆在哪里Sys.geteng(DYLD_LIBRARY_PATH = "/usr/local/lib")
,但它没有用。根据我从安装中得到的消息,实际上 R 确实知道共享库在哪里,但它就是无法加载它。请帮忙!