ROOT library problems on Ubuntu 14.04 with GCC 5.4.1


I am stuck with Ubuntu 14.04 for my Travis builds, but my project needs gcc / g++ >= 5. So I install gcc / g++ v5.4.1. And I install the root_v6.10.00.Linux-ubuntu16-x86_64-gcc5.4 binaries to link my project with. However doing so, results in the following when compiling:

/home/travis/root/bin/rootcling: /lib/x86_64-linux-gnu/ no version information available (required by /home/travis/root/lib/
[ 25%] /home/travis/root/bin/rootcling: relocation error: /home/travis/root/lib/ symbol _ZTTNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEE, version GLIBCXX_3.4.21 not defined in file with link time reference

Google searches point to c++ standard library mismatch or ABI mismatches.

However strings /usr/lib/x86_64-linux-gnu/ | grep GLIBCXX shows that GLIBCXX_3.4.21 is there…

Is the ROOT binary incompatible for my case?

Upgrade your system to the current Ubuntu 16.04.

Travis does not support Ubuntu 16.04 yet, so this is not an option (unfortunately).

Is only option here to build custom binaries, host them myself and use that for Travis CI builds?

You can limit your own code to what gcc 4.8 knows or you can run Travis on a Ubuntu 14.04 machine but then move its results to any newer system with gcc 6.x (where you can develop and run your own code).

Thanks, I guess I’ll try to figure out first if I can get the code to be gcc 4.8 compatible then…

Why do not install the ubuntu 14 binaries?

Note also that gcc 4.8 supports some c++11 features and ROOT uses “-std=c++11” for Ubuntu 14.04 binaries (which @mato mentions).

The ubuntu 14 binaries were the first I tried, but I would get:

Warning in cling::IncrementalParser::CheckABICompatibility():
  Possible C++ standard library mismatch, compiled with __GLIBCXX__ '20150426'
  Extraction of runtime standard library version was: '20150623'

Also I need gcc-5 / g+±5 for type traits such as std::is_trivially_move_constructable, which call to compiler intrinsics…

I built ROOT from Ubuntu 14, with gcc-5 and that seems to work. But for some reason when I valgrind over the libraries it gives thousands of false positives that I normally wouldn’t get with prebuilt binaries from the website (and yes I use the valgrind suppression file of root)

In this case, the option is to build from sources. You will not have the incompatibility between the version of the compiler used to build and used to run. The instructions are at

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.