You are here

Using GCC 4.9

6 posts / 0 new
Last post
jeremymiles's picture
Offline
Joined: 12/28/2016 - 14:01
Using GCC 4.9

I'm trying to install OpenMx, but it will not compile. For reasons that are complex and that I don't fully understand, I cannot use GCC beyond version 4.9, and having investigated on this forum, I suspect that this is the reason for the failure.

I tried to download an earlier version of OpenMx to see if that solved the problem, but the earliest version on CRAN is 2.2.2, from May 2015 (last year, for now!), and this still had the problem. Is there a a way to download an earlier version which might compile with 4.9? (Or is there some other way to persuade OpenMx to compile with GCC 4.9?)

Thanks,

Jeremy

More details: the errors relate mainly to the eigen package, and say things like:
(Note that I've simplified the paths a little).

C++ compilation of rule 'OpenMx' failed (Exit 1) [forge_remote_host=ioea14].
In file included from OpenMx/OpenMx/src/omxMatrix.cpp:30:
In file included from eigen3/Eigen/MatrixFunctions:59:
Eigen/src/MatrixFunctions/MatrixLogarithm.h:334:52: error: no member named 'Options' in 'Eigen::Map, 0, Eigen::Stride<0, 0> >'
static const int Options = DerivedNestedClean::Options;

Or

In file included from OpenMx/src/omxMatrix.cpp:30:
In file included fromeigen3/Eigen/MatrixFunctions:57:
eigen3/Eigen/src/MatrixFunctions/MatrixFunction.h:415:21: error: member reference base type 'ComplexMatrix' (aka 'int') is not a structure or union
result = Cresult.real();

jpritikin's picture
Offline
Joined: 05/24/2012 - 00:35
gcc

We have moved to gcc 5.4. Many CRAN packages require C++11 which is not well supported by gcc until recently. Why can't you use a newer version of gcc?

AdminRobK's picture
Offline
Joined: 01/24/2014 - 12:15
eigen library, not gcc version(?)

I don't think the version of gcc is your problem. As an OpenMx developer, I routinely build the package from source using gcc 4.9.2 on my Linux/GNU system. And besides, according to the GNU Project, gcc has been fully C++11-compliant since v4.8.1.

I think maybe your compiler is confused about where to find the eigen library's headers. It should be looking in your R package library, specifically in the directory for package 'RcppEigen', but it doesn't look as though that's what's happening.

jeremymiles's picture
Offline
Joined: 12/28/2016 - 14:01
Thanks!

Thanks to @jpritikin and @AdminRobK.

@jpritikin: The C compiler system we have is somewhat beyond me. We use a clang compiler which will become compatible with gcc 5.4 towards the end of the year (they say).

@AdminRobK: That is useful information - both eigen and RcppEigen here are non-standard, and code in eigen is not duplicated in RcppEigen. I'll poke around and see if I can make it find the correct headers.

Thanks again,

jeremy

jpritikin's picture
Offline
Joined: 05/24/2012 - 00:35
clang

I'm not sure if it is helpful to mention, but we don't test with clang (llvm). gcc is not as hard to compile from source as you might expect. I've done it recently.

jeremymiles's picture
Offline
Joined: 12/28/2016 - 14:01
clang

Yes, that's helpful. Thanks.