使用libstdc ++安装R包

时间:2014-03-07 16:06:02

标签: r package libstdc++

所以这就是事情:

我正在尝试安装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 ++编译这个包。我也在机器上找了这个库,但我找不到它。

感谢。

1 个答案:

答案 0 :(得分:0)

在REPL中,您可以使用withr::with_makevars在安装期间临时定义环境变量:

library(withr)

with_makevars(c(CXXFLAGS = "-stdlib=libstdc++"),
              install.packages("zinba", repos = NULL, type = "source"))

在幕后,它会使用您提供的代码创建一个临时文件,将环境变量R_MAKEVARS_USER设置为指向它,然后在完成后恢复默认值。

相关问题