所以这就是事情:
我正在尝试安装R软件包(“Zinba”),我正在使用OS X Mavericks 10.9.1,我在R CMD INSTALL中收到以下错误:
* installing to library ‘/usr/local/Cellar/r/3.0.2/R.framework/Versions/3.0/Resources/library’
* installing *source* package ‘zinba’ ...
** libs
clang -I/usr/local/Cellar/r/3.0.2/R.framework/Resources/include -DNDEBUG -I/usr/local/include -fPIC -c aliType.c -o aliType.o
clang++ -I/usr/local/Cellar/r/3.0.2/R.framework/Resources/include -DNDEBUG -I/usr/local/include -fPIC -g -O2 -c alignAdjust.cc -o alignAdjust.o
clang++ -I/usr/local/Cellar/r/3.0.2/R.framework/Resources/include -DNDEBUG -I/usr/local/include -fPIC -g -O2 -c analysis.cc -o analysis.o
In file included from analysis.cc:18:
./analysis.h:10:10: fatal error: 'ext/slist' file not found
#include <ext/slist>
^
1 error generated.
make: *** [analysis.o] Error 1
ERROR: compilation failed for package ‘zinba’
* removing ‘/usr/local/Cellar/r/3.0.2/R.framework/Versions/3.0/Resources/library/zinba’
我搜索了这个错误,看起来Mavericks中的XCode默认使用libc ++而不是libstdc ++,建议使用“-stdlib = libstdc ++”进行编译
现在这是第三方R套餐。任何人都可以建议如何使用libstdc ++编译这个包。我也在机器上找了这个库,但我找不到它。
感谢。
答案 0 :(得分:0)
在REPL中,您可以使用withr::with_makevars
在安装期间临时定义环境变量:
library(withr)
with_makevars(c(CXXFLAGS = "-stdlib=libstdc++"),
install.packages("zinba", repos = NULL, type = "source"))
在幕后,它会使用您提供的代码创建一个临时文件,将环境变量R_MAKEVARS_USER
设置为指向它,然后在完成后恢复默认值。