ROOT YAML compilation error

Hello,

I am trying to compile the following repository on LXPLUS:
https://gitlab.com/cuddandr/xsLLhFitter/-/tree/ND280UpFit_generalizedSampleDefinition

However, I’m getting the following compilation error:

Scanning dependencies of target xsllhFit
[ 64%] Building CXX object src/applications/CMakeFiles/xsllhFit.dir/src/xsllhFit.cxx.o
[ 66%] Linking CXX executable xsllhFit
/cvmfs/sft.cern.ch/lcg/releases/binutils/2.34-990b2/x86_64-centos7/bin/ld: ../fitter/libfitter.so.1.0.0: undefined reference to `ROOT::Math::Factory::CreateMinimizer(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
/cvmfs/sft.cern.ch/lcg/releases/binutils/2.34-990b2/x86_64-centos7/bin/ld: ../utils/libxslfutils.so.1.0.0: undefined reference to `YAML::operator<<(YAML::Emitter&, YAML::Node const&)'
/cvmfs/sft.cern.ch/lcg/releases/binutils/2.34-990b2/x86_64-centos7/bin/ld: ../utils/libxslfutils.so.1.0.0: undefined reference to `YAML::Emitter::Emitter()'
/cvmfs/sft.cern.ch/lcg/releases/binutils/2.34-990b2/x86_64-centos7/bin/ld: ../errprop/liberrprop.so.1.0.0: undefined reference to `TString::TString(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
/cvmfs/sft.cern.ch/lcg/releases/binutils/2.34-990b2/x86_64-centos7/bin/ld: ../utils/libxslfutils.so.1.0.0: undefined reference to `YAML::Emitter::SetLocalValue(YAML::EMITTER_MANIP)'
/cvmfs/sft.cern.ch/lcg/releases/binutils/2.34-990b2/x86_64-centos7/bin/ld: ../utils/libxslfutils.so.1.0.0: undefined reference to `YAML::Emitter::~Emitter()'
/cvmfs/sft.cern.ch/lcg/releases/binutils/2.34-990b2/x86_64-centos7/bin/ld: ../utils/libxslfutils.so.1.0.0: undefined reference to `YAML::LoadFile(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
/cvmfs/sft.cern.ch/lcg/releases/binutils/2.34-990b2/x86_64-centos7/bin/ld: ../utils/libxslfutils.so.1.0.0: undefined reference to `YAML::Emitter::c_str() const'
collect2: error: ld returned 1 exit status
make[2]: *** [src/applications/xsllhFit] Error 1
make[1]: *** [src/applications/CMakeFiles/xsllhFit.dir/all] Error 2
make: *** [all] Error 2

I am able to create the ROOT::Math::Factory object with CINT:

$ root -l
root [0] m = ROOT::Math::Factory::CreateMinimizer()
(ROOT::Math::Minimizer *) @0x7ffe5eaf7020
root [1]

Do you know what might be going wrong here? Any help is appreciated!!

ROOT Version: 6.24/06
Platform: LCG_98python3/x86_64-centos7-gcc10-opt
Compiler: cmake version 3.17.3

Apologies for the super-late response!

xsllhFit isn’t a ROOT thing so you might want to talk to whoever maintains that software. The executable needs to be linked against ROOT’s libraries MathCore and Core.

No worries. I figured out a solution. It works if I compile ROOT from source with the same compiler I then use for https://gitlab.com/cuddandr/xsLLhFitter/-/tree/ND280UpFit_generalizedSampleDefinition.

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