Warning in cling::IncrementalParser::CheckABICompatibility()

Hi,
I’ve newly installed root 6.03 on my 64 bit Ubuntu (14.04 LTS) machine and for every macro I try to compile, I get the following Warning message. If I ignore the warning message, the macro crashes with segmentation fault.

root [0]
root [0] .L plot00.C+
Info in TUnixSystem::ACLiC: creating shared library /home/narayan/rootwork/AN/./plot00_C.so
Warning in cling::IncrementalParser::CheckABICompatibility():
C++ ABI mismatch, compiled with GLIBCXX v20140404 running with v20150426
root [1]

I have worked comfortably with root 5.34 and am not sure of the origin of this problem.

Please help

Hi,

Where did you get ROOT from?

Cheers, Axel.

Hi,
I am also facing the same problem in my ubuntu 14.04.
I got the root source from here:
root.cern.ch/drupal/content/downloading-root

My root version is this:
root-6.02.04

Thanks,
Arka

Hi,

Your compiler and the one used to build ROOT are not the same. We probably didn’t update the ubuntu builders frequently enough. I have done that now and enabled auto update for them.

As a workaround I would suggest you to build ROOT from source, it’s fairly easy! See https://root.cern.ch/building-root

In October I will discuss with some GCC people how we can reduce the pickiness of cling wrt the standard library version.

Cheers, Axel.

A workaround may be to define in the rootlogon.C the compiler that was used for compiling ROOT. (It is a guess, I did not try).

gSystem->SetMakeSharedLib((TString(gSystem->GetMakeSharedLib())).ReplaceAll("g++ ", "g++-4.8 ").Data());

In this example, your g++ current version is 4.9, but ROOT was compiled with 4.8, and your system still remembers it as g+±4.8.

I have the same in Fedora 23 with gcc5.3.1 and root 6.06.
Could you please tell me which is the highest gcc version to work with

  1. Root 5.34
  2. Root 6.06
    ?

Thank you!
Andreas

Hi,

You can use any version of gcc with ROOT 5.34.

With ROOT 6.06, you must either use a version of gcc 4.9 or older or disable the use of the new ABI when compiling with gcc 5.1 or newer (this is a challenging option as you need to make sure that all the C++ libraries used to build ROOT are also build with the old ABI … i.e. usually means you can used pre-packaged products).

Cheers,
Philippe.

Got it. So since [quote]disable the use of the new ABI when compiling with gcc 5.1 or newer [/quote]
seemsa far too complicated I will continue using 5.34 as the main one.

As for the 6.06 I hope i can downgrade gcc to 4.9 or is it ok to use the precompiled 6.06 binaries?
thanx 8)

In Ubuntu/Debian, you can downgrade to gcc 4.9 easily following:

Well there must be a mistake, either in the previous post or this page root.cern.ch/content/release-60602

where we can see that Root 6.06.02 supports gcc5.1 to which I just downgraded in Fedora23. I tried to run th precompiled one and the output is

the whole message is in the .txt

Could someone clear this: is it mandatory to install gcc 4.9 (4.9.3 is ok?) and only that for Root 6.06?

Thank you!
errorROOT60602.txt (1.52 KB)

For ROOT6, I could not build with gcc5. I had to downgrade to 4.9. So 4.9.3 should be ok.

Concerning the ROOT6 version, I tried with 6.07.03, (which you can download through git, i.e. the master branch). But most probably all 6.xx.yy need a gcc<=4.9

got it. then I suppose that sth is not ok with the abovementioned filename. unless they mean that the prebuilt one was built with the use of gcc5.1 compiler.

whatever. 4.9 is the way out thanks

By the way, my previous comment applies if you build ROOT6 from source. I did not try at all with precompiled packages.

I was able to get root 6.6 working without a hitch in gentoo with gcc 5.3.0…

finally, after compiling gcc 4.9.3 and doing https://stackoverflow.com/questions/17275348/how-to-specify-new-gcc-path-for-cmake before running cmake (notice that the last /gcc and /g++ is the filename not a folder level),
I made it and built Root 6.06.02 with c++11 and minuit2 on Fedora 23.

nice having this talk people :slight_smile: :slight_smile:

Alternatively, you can specify directly:

cmake -DCMAKE_CXX_COMPILER=/usr/local/bin/g++ -DCMAKE_C_COMPILER=/opt/gcc-4.9/bin/gcc -DCMAKE_Fortran_COMPILER=/usr/local/bin/gfortran path/to/root_src

See

aha, good hint ferhue!
in my next build!