Problem compiling ROOT6beta2 on SLC6.5

Hi all,

I want to test ROOT6 beta 2 on my SLC6.5 linux virtual machine:

$ uname -a Linux vmslc65 2.6.32-358.23.2.el6.x86_64 #1 SMP Thu Oct 17 10:27:22 CEST 2013 x86_64 x86_64 x86_64 GNU/Linux $ gcc -dumpversion 4.4.7

As C++11 compliant compiler I installed clang from the SLC6 repositories, also because I would like to start using clang. In particular I installed:

Following your instructions, I downloaded the ROOT master branch with git:

and, following the method without CMake, I configured with:

Everything seems ok in the configure output but when I start the compilation it seems like if make is using the gcc header files instead of the correct clang files:

/usr/bin/../lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/bits/move.h:57:14: error: rvalue reference to type 'typename std::remove_reference<StringRef &>::type' (aka 'llvm::StringRef') cannot bind to lvalue of type 'llvm::StringRef'

Any suggestion?

Thanks a lot,
Matteo

Hi Matteo,

thanks for trying out ROOT6: we are eager to collect feedback from our users!
Could you try installing gcc48 and repeat the exact same steps you describe in your post?
In addition, if I may add a suggestion, you could move to beta3: v5-99-06 which was tagged 9 days ago.

Cheers,
Danilo

Hi,

to make Danilo’s comment even more explicit: you can use clang but you still need a newer libstdc++ - which comes with newer GCCs. ROOT 6 requires libstdc++ of GCC 4.7 and up (or libc++ but that’s a different can of worms :slight_smile:

Cheers, Axel.

Hi Danilo and Axel,

I sorted out why I did not have gcc 4.8 (and cmake 2.8, and others…) on my SLC6. All this stuff comes from the devtools repository that I had never actived, used to old SLC repositories.

Ok, now I have it, but the problem is that the “default gcc” is still the old 4.4.7 … how do I specify that I want to compile with the freshly installed gcc4.8? I prefer to avoid removing the old gcc 4.4.7 because I think many my programs count on it.

Thanks again,
Matteo

Alfonsi:

I am FAR from an expert on this, but I did play around with the devtoolset for a while with Scientific Linux 5.

You need to issue the command

slc enable devtoolset-2.1 ‘bash’

and it will start a bash session with the devtoolset new compiler as the default. You can check that with gcc -V or -v (I forget) and see that it will be gcc 4.8.

I learned this from: access.redhat.com/site/document … -en-US.pdf

It explains other ways to do it also.

Hi all,

thanks for the replies. I tried again from scratch (I mean I git-cloned again the sources today) in a shell where I “scl enabled devtoolset-2”, however I have the same problem.

In this shell I checked:

$ gcc -dumpversion
4.8.2

however I think that the problem is that clang (and I want to try with clang) does not get the right path yet, even within this special shell:

$ clang -v
clang version 3.4 (tags/RELEASE_34/final)
Target: x86_64-redhat-linux-gnu
Thread model: posix
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-redhat-linux/4.4.4
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-redhat-linux/4.4.7
Found candidate GCC installation: /usr/lib/gcc/x86_64-redhat-linux/4.4.4
Found candidate GCC installation: /usr/lib/gcc/x86_64-redhat-linux/4.4.7
Selected GCC installation: /usr/bin/../lib/gcc/x86_64-redhat-linux/4.4.7

Indeed clang is not part of devtoolset-2, so there should be some other way to indicate the path to the compiler.

Another question for the moment that I finally manage to run ROOT6 (I am very positive that I will manage!) is if you have a short web page on the new features that I should try on ROOT6.

Thanks again,
Matteo