【发布时间】:2015-10-23 03:51:00
【问题描述】:
我在 CentOS 6.5 机器上安装 Rcpp for R 3.2.2 时遇到了一些问题。我在 StackOverflow 和其他论坛上找到了并没有真正帮助的答案,这些论坛在解决这个问题方面似乎没有提供太多帮助。如果我尝试使用R CMD INSTALL从R内部或命令行安装,我最终会遇到类似的错误,即无法安装Rcpp,最终错误为make: *** [Date.o] Error 1,之前的行/错误为/usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/exception:35: error: expected declaration before end of line .
下面是我在从https://cran.rstudio.com/src/contrib/ 获取压缩包后尝试通过R CMD INSTALL Rcpp_0.12.1.tar.gz 安装。
$ sudo R CMD INSTALL Rcpp_0.12.1.tar.gz
* installing to library ‘/usr/lib64/R/library’
* installing *source* package ‘Rcpp’ ...
** package ‘Rcpp’ successfully unpacked and MD5 sums checked
** libs
g++ -m64 -I/usr/include/R -DNDEBUG -I../inst/include/ -I/usr/local/include -fpic -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -c Date.cpp -o Date.o
In file included from ../inst/include/Rcpp/platform/compiler.h:100,
from ../inst/include/Rcpp/r/headers.h:48,
from ../inst/include/RcppCommon.h:29,
from ../inst/include/Rcpp.h:27,
from Date.cpp:31:
/usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/cmath:43:28: error: bits/c++config.h: No such file or directory
In file included from /usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/bits/stl_tree.h:63,
from /usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/map:60,
from ../inst/include/Rcpp/platform/compiler.h:176,
from ../inst/include/Rcpp/r/headers.h:48,
from ../inst/include/RcppCommon.h:29,
from ../inst/include/Rcpp.h:27,
from Date.cpp:31:
/usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/bits/allocator.h:48:31: error: bits/c++allocator.h: No such file or directory
In file included from /usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/ios:42,
from /usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/ostream:40,
from /usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/iterator:65,
from ../inst/include/RcppCommon.h:49,
from ../inst/include/Rcpp.h:27,
from Date.cpp:31:
/usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/bits/localefwd.h:42:76: error: bits/c++locale.h: No such file or directory
In file included from /usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/bits/ios_base.h:41,
from /usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/ios:43,
from /usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/ostream:40,
from /usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/iterator:65,
from ../inst/include/RcppCommon.h:49,
from ../inst/include/Rcpp.h:27,
from Date.cpp:31:
/usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/ext/atomicity.h:34:23: error: bits/gthr.h: No such file or directory
/usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/ext/atomicity.h:35:30: error: bits/atomic_word.h: No such file or directory
In file included from /usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/bits/basic_ios.h:39,
from /usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/ios:45,
from /usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/ostream:40,
from /usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/iterator:65,
from ../inst/include/RcppCommon.h:49,
from ../inst/include/Rcpp.h:27,
from Date.cpp:31:
/usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/bits/locale_facets.h:43:30: error: bits/ctype_base.h: No such file or directory
/usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/bits/locale_facets.h:1510:31: error: bits/ctype_inline.h: No such file or directory
In file included from /usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/cmath:44,
from ../inst/include/Rcpp/platform/compiler.h:100,
from ../inst/include/Rcpp/r/headers.h:48,
from ../inst/include/RcppCommon.h:29,
from ../inst/include/Rcpp.h:27,
from Date.cpp:31:
/usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/bits/cpp_type_traits.h:69: error: expected constructor, destructor, or type conversion before ‘(’ token
/usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/bits/cpp_type_traits.h:74: error: ‘_GLIBCXX_END_NAMESPACE’ does not name a type
/usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/bits/cpp_type_traits.h:87: error: ‘__true_type’ does not name a type
/usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/bits/cpp_type_traits.h:110: error: ‘__true_type’ does not name a type
/usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/bits/cpp_type_traits.h:125: error: ‘__true_type’ does not name a type
/usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/bits/cpp_type_traits.h:145: error: ‘__true_type’ does not name a type
/usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/bits/cpp_type_traits.h:152: error: ‘__true_type’ does not name a type
/usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/bits/cpp_type_traits.h:159: error: ‘__true_type’ does not name a type
/usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/bits/cpp_type_traits.h:166: error: ‘__true_type’ does not name a type
/usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/bits/cpp_type_traits.h:198: error: ‘__true_type’ does not name a type
/usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/bits/cpp_type_traits.h:205: error: ‘__true_type’ does not name a type
/usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/bits/cpp_type_traits.h:212: error: ‘__true_type’ does not name a type
/usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/bits/cpp_type_traits.h:219: error: ‘__true_type’ does not name a type
/usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/bits/cpp_type_traits.h:226: error: ‘__true_type’ does not name a type
/usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/bits/cpp_type_traits.h:233: error: ‘__true_type’ does not name a type
/usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/bits/cpp_type_traits.h:240: error: ‘__true_type’ does not name a type
/usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/bits/cpp_type_traits.h:247: error: ‘__true_type’ does not name a type
/usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/bits/cpp_type_traits.h:265: error: ‘__true_type’ does not name a type
/usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/bits/cpp_type_traits.h:272: error: ‘__true_type’ does not name a type
/usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/bits/cpp_type_traits.h:279: error: ‘__true_type’ does not name a type
/usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/bits/cpp_type_traits.h:296: error: ‘__true_type’ does not name a type
/usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/bits/cpp_type_traits.h:310: error: ‘__gnu_cxx’ was not declared in this scope
/usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/bits/cpp_type_traits.h:311: error: template argument 1 is invalid
/usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/bits/cpp_type_traits.h:355: error: ‘__true_type’ does not name a type
/usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/bits/cpp_type_traits.h:378: error: ‘__true_type’ does not name a type
/usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/bits/cpp_type_traits.h:385: error: ‘__true_type’ does not name a type
/usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/bits/cpp_type_traits.h:392: error: ‘__true_type’ does not name a type
/usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/bits/cpp_type_traits.h:417: error: ‘_GLIBCXX_END_NAMESPACE’ does not name a type
In file included from /usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/cmath:45,
from ../inst/include/Rcpp/platform/compiler.h:100,
from ../inst/include/Rcpp/r/headers.h:48,
from ../inst/include/RcppCommon.h:29,
from ../inst/include/Rcpp.h:27,
from Date.cpp:31:
/usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/ext/type_traits.h:45: error: ‘__enable_if’ is not a template
/usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/ext/type_traits.h:64: error: ‘__is_integer’ is not a member of ‘std’
/usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/ext/type_traits.h:64: error: ‘__is_integer’ is not a member of ‘std’
/usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/ext/type_traits.h:64: error: template argument 1 is invalid
/usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/ext/type_traits.h:64: error: typedef name may not be a nested-name-specifier
/usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/ext/type_traits.h:64: error: expected ‘;’ before ‘>’ token
/usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/ext/type_traits.h:67: error: ‘__if_type’ has not been declared
/usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/ext/type_traits.h:107: error: ‘__is_integer’ is not a member of ‘std’
/usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/ext/type_traits.h:107: error: ‘__is_integer’ is not a member of ‘std’
/usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/ext/type_traits.h:107: error: template argument 1 is invalid
/usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/ext/type_traits.h:107: error: typedef name may not be a nested-name-specifier
/usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/ext/type_traits.h:107: error: expected ‘;’ before ‘>’ token
/usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/ext/type_traits.h:110: error: ‘__if_type’ has not been declared
/usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/ext/type_traits.h:158: error: ‘__is_integer’ is not a member of ‘std’
/usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/ext/type_traits.h:158: error: expected primary-expression before ‘>’ token
/usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/ext/type_traits.h:158: error: expected constructor, destructor, or type conversion before ‘>’ token
/usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/ext/type_traits.h:163: error: ‘__promote’ is not a template
In file included from /usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/cmath:46,
from ../inst/include/Rcpp/platform/compiler.h:100,
from ../inst/include/Rcpp/r/headers.h:48,
from ../inst/include/RcppCommon.h:29,
from ../inst/include/Rcpp.h:27,
from Date.cpp:31:
/usr/include/math.h:30: error: expected constructor, destructor, or type conversion before ‘extern’
In file included from /usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/ios:40,
from /usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/ostream:40,
from /usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/iterator:65,
from ../inst/include/RcppCommon.h:49,
from ../inst/include/Rcpp.h:27,
from Date.cpp:31:
/usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/exception:35: error: expected declaration before end of line
make: *** [Date.o] Error 1
ERROR: compilation failed for package ‘Rcpp’
* removing ‘/usr/lib64/R/library/Rcpp’
我尝试过的其他事情
- 已验证已安装
gcc.x86_64、gcc-c++.x86_64和gcc-gfortran.x86_64 - 已验证
make和automake已安装
【问题讨论】:
-
你可能需要升级你的编译器;不幸的是,CentOS 6 附带了一个相当过时的 gcc 版本。 This 可能会有所帮助。
-
@nrussell 这绝对值得一试,但不幸的是,这并没有成功,即使启用了 SCL,仍然会看到同样的错误。
-
@nrussell 所以这对我来说是一个菜鸟之举。你是对的,使用 SCL 实际上确实解决了这个问题。当我最初使用
scl enable devtoolset-1.1 bash切换到 SCL 时,我自己也是这样做的,但是当我 sudo 安装时并没有延续。