Build fails with root6 and gcc 5.2
Building TRUEE fails on Linux 64 bit using root6 and gcc 5.2.
Problematic are TStrings:
lib/libTRUEE_CORE.a(Frontend.cxx.o): In function `Frontend::ReadIn(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)':
Frontend.cxx:(.text+0x2edf): undefined reference to `TString::operator=(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
lib/libTRUEE_CORE.a(Frontend.cxx.o): In function `Frontend::Frontend(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)':
Frontend.cxx:(.text+0x3534): undefined reference to `TString::TString(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
Frontend.cxx:(.text+0x354c): undefined reference to `TString::TString(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
lib/libTRUEE_CORE.a(Frontend.cxx.o): In function `Frontend::plot_testmode(std::vector<TrueeResult*, std::allocator<TrueeResult*> >)':
Frontend.cxx:(.text+0x396e): undefined reference to `TString::TString(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
Frontend.cxx:(.text+0x3989): undefined reference to `TString::TString(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
lib/libTRUEE_CORE.a(Frontend.cxx.o): In function `Frontend::plot_pullmode(std::vector<std::vector<TrueeResult*, std::allocator<TrueeResult*> >, std::allocator<std::vector<TrueeResult*, std::allocator<TrueeResult*> > > >)':
Frontend.cxx:(.text+0x5fd4): undefined reference to `TString::TString(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
lib/libTRUEE_CORE.a(Frontend.cxx.o):Frontend.cxx:(.text+0x5ff4): more undefined references to `TString::TString(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' follow
lib/libTRUEE_CORE.a(Frontend.cxx.o): In function `Frontend::write_pullresults(std::vector<TrueeResult*, std::allocator<TrueeResult*> >)':
Frontend.cxx:(.text+0xd67c): undefined reference to `TString::operator=(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
Frontend.cxx:(.text+0xd86c): undefined reference to `TString::operator=(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
lib/libTRUEE_CORE.a(Frontend.cxx.o): In function `Frontend::Plot_XYCorrelation_Observables(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, TString, TString, int, int, bool, bool)':
Frontend.cxx:(.text+0xe237): undefined reference to `TString::TString(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
Frontend.cxx:(.text+0xe252): undefined reference to `TString::TString(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
Frontend.cxx:(.text+0xec9d): undefined reference to `TString::TString(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
Frontend.cxx:(.text+0xecb8): undefined reference to `TString::TString(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
lib/libTRUEE_CORE.a(Input.cxx.o): In function `Input::ParameterInput(TString)':
Input.cxx:(.text+0xafe): undefined reference to `TString::operator=(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
Input.cxx:(.text+0xb2f): undefined reference to `TString::operator=(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
lib/libTRUEE_CORE.a(Processor.cxx.o): In function `Processor::RegUnfolding(Input*)':
Processor.cxx:(.text+0x27a4): undefined reference to `TString::TString(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
Processor.cxx:(.text+0x27c5): undefined reference to `TString::TString(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
Processor.cxx:(.text+0x2c4c): undefined reference to `TString::TString(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
lib/libTRUEE_CORE.a(Processor.cxx.o): In function `Processor::Comparisons(TString, Input*)':
Processor.cxx:(.text+0x4b96): undefined reference to `TString::TString(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
Processor.cxx:(.text+0x4bc2): undefined reference to `TString::TString(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
lib/libTRUEE_CORE.a(Processor.cxx.o):Processor.cxx:(.text+0x4da8): more undefined references to `TString::TString(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' follow
collect2: error: ld returned 1 exit status
Geant4 seems to have the same problem and a solution:
Use of ROOT6: In tests using ROOT6.04.02 w/ C++11 enabled and GCC 5.2 (on Linux box) we get the following error when mixing G4String (better std::string, since the former is an extension of the latter) and TString objects:
undefined reference to `TString::operator=(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
solution is to convert std::string to const char*:
G4String somestr = "SoBadIdeaToUseTStrings";
TString somerootstr = somestr.c_str();
https://twiki.cern.ch/twiki/bin/view/Geant4/Cxx11MigrationTaskForce