编译失败,无法找到“未来”
我试图使用Rcpp11绑定使用C++ 11二进制引擎盖下编译的R包。我已经成功地编译和使用我的Mac上这个包(OSX 10.9.5,编译铛++):编译失败,无法找到“未来”
Apple LLVM version 6.0 (clang-600.0.51) (based on LLVM 3.5svn) Target: x86_64-apple-darwin13.4.0 Thread model: posix
然而,试图在64位的Red Hat Linux编译g ++编译器版本4.4.7-4失败,因为称为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++ -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
当Rcpp11
不编译,这通常意味着,编译器是不是一个C++ 11编译器。以前版本的Rcpp11
在C++11
的含义上使用了一些妥协,但接下来的版本不会妥协。 C++11
= C++11
,不未完成C++0x
。
是什么让C++11
转发伟大是所有这些部分是如何结合在一起的。
有一个C++11
编译器是必须付出的代价使用Rcpp11
。我认为这是一个功能。
是,G ++ 4.4。*是(方式)太老了任何有意义的C++ 11的工作,都不会有问题,其RCPP *您作为约束使用变种来自于C++ 11的一面。有了一个旧的Rd Hat帽子,无论如何你都会遇到困难。 – 2014-10-20 19:08:06
从技术上讲,4.4.7并不是那么古老,但当然4.4.0于2009年4月19日发布,所以主要版本到现在已有5年多了。它于2012年3月13日发布。gcc 4.7.0是第一个完全支持2012年第22期Marth发布的C++ 11的软件。但由于RedHat对新版本保守,因此在4.4版本中选择了4.7.0版本.7可能有点冒险,因为事情可能会在4.4到4.5之间变化,不要介意4.4到4.7。我个人会得到4.8.2或4.9.1,在本地构建并去为它。 – 2014-10-20 19:21:46
谢谢,伙计们。不幸的是,这个Red Hat盒子是我部门的高性能服务器,而且我没有root权限来安装更新的编译器。叹。 – Wesley 2014-10-20 19:47:13