0

我正在尝试使用 Rcpp11 绑定编译 R 包,以便在后台使用 C++11 二进制文件。我已经在我的Mac(OSX 10.9.5,编译器是clang++)上成功编译并使用了这个包:

Apple LLVM version 6.0 (clang-600.0.51) (based on LLVM 3.5svn) Target: x86_64-apple-darwin13.4.0 Thread model: posix

但是,尝试使用 g++ 编译器版本 4.4.7-4 在 64 位 Red Hat Linux 下编译失败,因为future找不到调用的头文件或库或命名空间:

In file included from RcppExports.cpp:4: /path/to/R-libs/3.1/Rcpp11/include/Rcpp.h:50:18: error: future: No such file or directory

据我所知,future是 C++11 规范的一部分。我觉得奇怪的是成功加载了其他几个命名空间(我们成功地加载到了Rcpp.h的第 50 行),但future没有。这是由于使用了过时的编译器吗?作为参考,我将附加对失败的 g++ 编译器的实际调用:

g++ -m64 -std=c++0x -I/usr/include/R -DNDEBUG -I/usr/local/include -I"/path/to/R-libs/3.1/Rcpp11/include" -fpic -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -c RcppExports.cpp -o RcppExports.o

4

1 回答 1

2

Rcpp11不编译时,通常意味着编译器不是 C++11 编译器。以前的版本Rcpp11在什么C++11意思上使用了一些妥协,但下一个版本不会妥协。C++11= C++11,未完待续C++0x

所有这些部分如何C++11组合在一起,才是伟大的。

拥有C++11编译器是使用的代价Rcpp11。我认为这是一个特点。

于 2014-10-20T21:01:53.927 回答