Home | News | Documentation | Download

ROOT 6.24.00 RooFit link fail

Dear experts,
I’m trying to compile my RooFit fit code using ROOT 6.24.00, whose RooFit is faster.
When I linked the files, the program told me :

bin/RooDalitzAmplitude_Bp.o:(.data.rel.ro._ZTV21RooDalitzAmplitude_Bp[_ZTV21RooDalitzAmplitude_Bp]+0x470): undefined reference to `RooAbsReal::binBoundaries[abi:cxx11](RooAbsRealLValue&, double, double) const'
bin/RooDalitzAmplitude_Bp.o:(.data.rel.ro._ZTV21RooDalitzAmplitude_Bp[_ZTV21RooDalitzAmplitude_Bp]+0x478): undefined reference to `RooAbsReal::plotSamplingHint[abi:cxx11](RooAbsRealLValue&, double, double) const'
bin/RooFGaussian.o:(.data.rel.ro._ZTV12RooFGaussian[_ZTV12RooFGaussian]+0x470): undefined reference to `RooAbsReal::binBoundaries[abi:cxx11](RooAbsRealLValue&, double, double) const'
bin/RooFGaussian.o:(.data.rel.ro._ZTV12RooFGaussian[_ZTV12RooFGaussian]+0x478): undefined reference to `RooAbsReal::plotSamplingHint[abi:cxx11](RooAbsRealLValue&, double, double) const'
collect2: error: ld returned 1 exit status
make: *** [FitDefault] Error 1

I have added -lRooFit -lRooFitCore -lRooFitMore -lMathCore -lRooStats.
Is there something I missed or this is a small bug of ROOT6.24.00?

Thank you in advance.

The order of libraries matters.
The easiest thing to try would be to put this list of libraries twice (and I hope you put this list after all your own object files and libraries).

Thanks for your kind reply.
But putting the list after all my own object files and libraries doesn’t help.
BTW, my code can be compiled by ROOT6.22.08.
Maybe this is a small bug of ROOT6.24.00?

Try to put this list of libraries twice.

Thanks for your kind reply.
I tried putting this list of libraries twice, but it doesn’t help.
Is there any other suggestion?
Thanks in advance.

Hi @shenzh ,
does that happen also if you recompile ROOT from an empty build directory, and then compile your RooFit code with exactly the same compiler and standard library that ROOT used?

Can you compile your code with the 6.24 ROOT releases on LXPLUS?

Cheers,
Enrico

What I used is 6.24 ROOT releases on cvmfs:
by

. /cvmfs/sft.cern.ch/lcg/app/releases/ROOT/6.24.00/x86_64-centos7-gcc48-opt/bin/thisroot.sh

and my gcc version is 7.3.0.

The binaries’ path explicitly says “gcc48”, i.e. the standard gcc 4.8.5 on CentOS 7.
So, most probably, they are incompatible with gcc 7.3.0.

Thanks.

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