rcentosrcpprcpp11

RcppArmadillo: failing to install on CentOS


I am trying to install RcppArmadillo on CentOS. Here are some environment details:

OS: CentOS release 6.5 (Final)
R version: R-3.1.2-1.el6.x86_64
uname -sr: Linux 2.6.32-431.29.2.el6.x86_64
gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-11)

I have listed below the error message I get if run install.packages("RcppArmadillo") from within R. Any help much appreciated. Cheers.

* installing *source* package ‘RcppArmadillo’ ...
** package ‘RcppArmadillo’ successfully unpacked and MD5 sums checked
* checking LAPACK_LIBS: divide-and-conquer complex SVD available via R-supplied LAPACK
** libs
g++ -m64 -I/usr/include/R -DNDEBUG  -I/usr/local/include -I"/home/rexec/R/library/Rcpp/include"  -I../inst/include -fpic  -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic  -c RcppArmadillo.cpp -o RcppArmadillo.o
In file included from ../inst/include/armadillo:97,
             from ../inst/include/RcppArmadilloForward.h:46,
             from ../inst/include/RcppArmadillo.h:30,
             from RcppArmadillo.cpp:22:
../inst/include/armadillo_bits/traits.hpp: In instantiation of ‘const bool arma::is_arma_type<std::__traitor<std::__is_integer<unsigned int>, std::__is_floating<unsigned int> >::<anonymous enum> >::value’:
../inst/include/armadillo_bits/op_expmat_meat.hpp:51:   instantiated from here
../inst/include/armadillo_bits/traits.hpp:614: error: ‘std::__traitor<std::__is_integer<unsigned int>, std::__is_floating<unsigned int> >::<anonymous enum>’ is/uses anonymous type
../inst/include/armadillo_bits/traits.hpp:614: error:   trying to instantiate ‘template<class T> struct arma::is_subview_elem2’
../inst/include/armadillo_bits/traits.hpp:614: error: ‘std::__traitor<std::__is_integer<unsigned int>, std::__is_floating<unsigned int> >::<anonymous enum>’ is/uses anonymous type
../inst/include/armadillo_bits/traits.hpp:614: error:   trying to instantiate ‘template<class T> struct arma::is_subview_elem1’
../inst/include/armadillo_bits/traits.hpp:614: error: ‘std::__traitor<std::__is_integer<unsigned int>, std::__is_floating<unsigned int> >::<anonymous enum>’ is/uses anonymous type
../inst/include/armadillo_bits/traits.hpp:614: error:   trying to instantiate ‘template<class T> struct arma::is_subview_col’
../inst/include/armadillo_bits/traits.hpp:614: error: ‘std::__traitor<std::__is_integer<unsigned int>, std::__is_floating<unsigned int> >::<anonymous enum>’ is/uses anonymous type
../inst/include/armadillo_bits/traits.hpp:614: error:   trying to instantiate ‘template<class T> struct arma::is_subview_row’
../inst/include/armadillo_bits/traits.hpp:614: error: ‘std::__traitor<std::__is_integer<unsigned int>, std::__is_floating<unsigned int> >::<anonymous enum>’ is/uses anonymous type
../inst/include/armadillo_bits/traits.hpp:614: error:   trying to instantiate ‘template<class T> struct arma::is_subview’
../inst/include/armadillo_bits/traits.hpp:614: error: ‘std::__traitor<std::__is_integer<unsigned int>, std::__is_floating<unsigned int> >::<anonymous enum>’ is/uses anonymous type
../inst/include/armadillo_bits/traits.hpp:614: error:   trying to instantiate ‘template<class T>     struct arma::is_diagview’
../inst/include/armadillo_bits/traits.hpp:614: error: ‘std::__traitor<std::__is_integer<unsigned int>, std::__is_floating<unsigned int> >::<anonymous enum>’ is/uses anonymous type
../inst/include/armadillo_bits/traits.hpp:614: error:   trying to instantiate ‘template<class T> struct arma::is_mtGlue’
../inst/include/armadillo_bits/traits.hpp:614: error: ‘std::__traitor<std::__is_integer<unsigned int>, std::__is_floating<unsigned int> >::<anonymous enum>’ is/uses anonymous type
../inst/include/armadillo_bits/traits.hpp:614: error:   trying to instantiate ‘template<class T> struct arma::is_mtOp’
../inst/include/armadillo_bits/traits.hpp:614: error: ‘std::__traitor<std::__is_integer<unsigned int>, std::__is_floating<unsigned int> >::<anonymous enum>’ is/uses anonymous type
../inst/include/armadillo_bits/traits.hpp:614: error:   trying to instantiate ‘template<class T> struct arma::is_eGlue’
../inst/include/armadillo_bits/traits.hpp:614: error: ‘std::__traitor<std::__is_integer<unsigned int>, std::__is_floating<unsigned int> >::<anonymous enum>’ is/uses anonymous type
../inst/include/armadillo_bits/traits.hpp:614: error:   trying to instantiate ‘template<class T> struct arma::is_eOp’
../inst/include/armadillo_bits/traits.hpp:614: error: ‘std::__traitor<std::__is_integer<unsigned int>, std::__is_floating<unsigned int> >::<anonymous enum>’ is/uses anonymous type
../inst/include/armadillo_bits/traits.hpp:614: error:   trying to instantiate ‘template<class T> struct arma::is_Glue’
../inst/include/armadillo_bits/traits.hpp:614: error: ‘std::__traitor<std::__is_integer<unsigned int>, std::__is_floating<unsigned int> >::<anonymous enum>’ is/uses anonymous type
../inst/include/armadillo_bits/traits.hpp:614: error:   trying to instantiate ‘template<class T> struct arma::is_Op’
../inst/include/armadillo_bits/traits.hpp:614: error: ‘std::__traitor<std::__is_integer<unsigned int>, std::__is_floating<unsigned int> >::<anonymous enum>’ is/uses anonymous type
../inst/include/armadillo_bits/traits.hpp:614: error:   trying to instantiate ‘template<class T> struct arma::is_Gen’
../inst/include/armadillo_bits/traits.hpp:614: error: ‘std::__traitor<std::__is_integer<unsigned int>, std::__is_floating<unsigned int> >::<anonymous enum>’ is/uses anonymous type
../inst/include/armadillo_bits/traits.hpp:614: error:   trying to instantiate ‘template<class T> struct arma::is_Mat’
../inst/include/armadillo_bits/traits.hpp: In instantiation of ‘const bool arma::is_arma_type<std::__traitor<std::__is_integer<double>, std::__is_floating<double> >::<anonymous enum> >::value’:
../inst/include/armadillo_bits/op_expmat_meat.hpp:51:   instantiated from here
../inst/include/armadillo_bits/traits.hpp:614: error: ‘std::__traitor<std::__is_integer<double>, std::__is_floating<double> >::<anonymous enum>’ is/uses anonymous type
../inst/include/armadillo_bits/traits.hpp:614: error:   trying to instantiate ‘template<class T> struct arma::is_subview_elem2’
../inst/include/armadillo_bits/traits.hpp:614: error: ‘std::__traitor<std::__is_integer<double>, std::__is_floating<double> >::<anonymous enum>’ is/uses anonymous type
../inst/include/armadillo_bits/traits.hpp:614: error:   trying to instantiate ‘template<class T> struct arma::is_subview_elem1’
../inst/include/armadillo_bits/traits.hpp:614: error: ‘std::__traitor<std::__is_integer<double>, std::__is_floating<double> >::<anonymous enum>’ is/uses anonymous type
../inst/include/armadillo_bits/traits.hpp:614: error:   trying to instantiate ‘template<class T> struct arma::is_subview_col’
../inst/include/armadillo_bits/traits.hpp:614: error: ‘std::__traitor<std::__is_integer<double>, std::__is_floating<double> >::<anonymous enum>’ is/uses anonymous type
../inst/include/armadillo_bits/traits.hpp:614: error:   trying to instantiate ‘template<class T> struct arma::is_subview_row’
../inst/include/armadillo_bits/traits.hpp:614: error: ‘std::__traitor<std::__is_integer<double>, std::__is_floating<double> >::<anonymous enum>’ is/uses anonymous type
../inst/include/armadillo_bits/traits.hpp:614: error:   trying to instantiate ‘template<class T> struct arma::is_subview’
../inst/include/armadillo_bits/traits.hpp:614: error: ‘std::__traitor<std::__is_integer<double>, std::__is_floating<double> >::<anonymous enum>’ is/uses anonymous type
../inst/include/armadillo_bits/traits.hpp:614: error:   trying to instantiate ‘template<class T> struct arma::is_diagview’
../inst/include/armadillo_bits/traits.hpp:614: error: ‘std::__traitor<std::__is_integer<double>, std::__is_floating<double> >::<anonymous enum>’ is/uses anonymous type
../inst/include/armadillo_bits/traits.hpp:614: error:   trying to instantiate ‘template<class T> struct arma::is_mtGlue’
../inst/include/armadillo_bits/traits.hpp:614: error: ‘std::__traitor<std::__is_integer<double>, std::__is_floating<double> >::<anonymous enum>’ is/uses anonymous type
../inst/include/armadillo_bits/traits.hpp:614: error:   trying to instantiate ‘template<class T> struct arma::is_mtOp’
../inst/include/armadillo_bits/traits.hpp:614: error: ‘std::__traitor<std::__is_integer<double>, std::__is_floating<double> >::<anonymous enum>’ is/uses anonymous type
../inst/include/armadillo_bits/traits.hpp:614: error:   trying to instantiate ‘template<class T> struct arma::is_eGlue’
../inst/include/armadillo_bits/traits.hpp:614: error: ‘std::__traitor<std::__is_integer<double>, std::__is_floating<double> >::<anonymous enum>’ is/uses anonymous type
../inst/include/armadillo_bits/traits.hpp:614: error:   trying to instantiate ‘template<class T> struct arma::is_eOp’
../inst/include/armadillo_bits/traits.hpp:614: error: ‘std::__traitor<std::__is_integer<double>, std::__is_floating<double> >::<anonymous enum>’ is/uses anonymous type
../inst/include/armadillo_bits/traits.hpp:614: error:   trying to instantiate ‘template<class T> struct arma::is_Glue’
../inst/include/armadillo_bits/traits.hpp:614: error: ‘std::__traitor<std::__is_integer<double>, std::__is_floating<double> >::<anonymous enum>’ is/uses anonymous type
../inst/include/armadillo_bits/traits.hpp:614: error:   trying to instantiate ‘template<class T> struct arma::is_Op’
../inst/include/armadillo_bits/traits.hpp:614: error: ‘std::__traitor<std::__is_integer<double>, std::__is_floating<double> >::<anonymous enum>’ is/uses anonymous type
../inst/include/armadillo_bits/traits.hpp:614: error:   trying to instantiate ‘template<class T> struct arma::is_Gen’
../inst/include/armadillo_bits/traits.hpp:614: error: ‘std::__traitor<std::__is_integer<double>, std::__is_floating<double> >::<anonymous enum>’ is/uses anonymous type
../inst/include/armadillo_bits/traits.hpp:614: error:   trying to instantiate ‘template<class T> struct arma::is_Mat’
make: *** [RcppArmadillo.o] Error 1
ERROR: compilation failed for package ‘RcppArmadillo’
* removing ‘/home/rexec/R/library/RcppArmadillo’

The downloaded source packages are in
‘/tmp/Rtmp2hNzB9/downloaded_packages’
Warning message:
In install.packages("RcppArmadillo") :
  installation of package ‘RcppArmadillo’ had non-zero exit status

Solution

  • It's a bug in the ancient gcc/g++ 4.4 that ships with CentOS 6. Upgrade to CentOS 7 which has a newer g++, or ask the RcppArmadillo maintainers to update to the latest version of Armadillo (4.550.2) which has a workaround for the bug in g++.

    You could also manually install older versions of RcppArmadillo from this site: http://cran.r-project.org/src/contrib/Archive/RcppArmadillo/
    Version 4.500 works on CentOS 6