Error in <TUnixSystem::FindDynamicLibrary>

Hi, I am developing a GUI program. It is compile as an executable program named Cubix. Since now, I was using root 6.10.06 and all was working perfectly. I moved to the root 6.14.06 and I have now errors at the execution. Root is looking for the library libCubix.so (but I never generated it before). Here is the error message I have:

Error in TUnixSystem::FindDynamicLibrary: libCubix.so does not exist in /opt/root/lib:/opt/tensorflow/lib:/.singularity.d/libs:/home/dudouet/Softs/test/lib:.:/opt/root/lib:/lib/x86_64-linux-gnu/tls/x86_64:/lib/x86_64-linux-gnu/tls:/lib/x86_64-linux-gnu/x86_64:/lib/x86_64-linux-gnu:/usr/lib/x86_64-linux-gnu/tls/x86_64:/usr/lib/x86_64-linux-gnu/tls:/usr/lib/x86_64-linux-gnu/x86_64:/usr/lib/x86_64-linux-gnu:/lib/tls/x86_64:/lib/tls:/lib/x86_64:/lib:/usr/lib/tls/x86_64:/usr/lib/tls:/usr/lib/x86_64:/usr/lib
IncrementalExecutor::executeFunction: symbol ‘_ZN14CXGFileBrowser11PadModifiedEv’ unresolved while linking symbol ‘__cf_4’!
You are probably missing the definition of CXGFileBrowser::PadModified()
Maybe you need to load the corresponding shared library?
Error in TClingCallFunc::make_wrapper: Failed to compile
==== SOURCE BEGIN ====
#pragma clang diagnostic push
#pragma clang diagnostic ignored “-Wformat-security”
attribute((used)) extern “C” void __cf_4(void* obj, int nargs, void** args, void* ret)
{
((CXGFileBrowser*)obj)->PadModified();
return;
}
#pragma clang diagnostic pop
==== SOURCE END ====

What has been changed in the last root versions ?

Thanks in advance

Jérémie


ROOT Version: 6.14.06
Platform: Ubuntu 16.10
Compiler: gcc 7.3


Where is this CXGFileBrowser coming from?

This in one of my classes, which is compiled in my cmake

Then it looks like something is broken on your side…

Yes I understand it but it is not the case for root 6-10… Why root is looking at libCubix.so ? Cubix is an executable, not a library. (I am absolutely not an expert in cmake and compilation stuff, so I’m sure that I am doing something wrong, but which was accepted by the older root versions)

Maybe @amadio has an idea…

It seems that you should link the library where you have the __cf_4 function to your Cubix library, since you need it for the missing symbol mentioned CXGFileBrowser::PadModified(). However, this library may be in a place that ROOT cannot find, therefore the error. Older versions of ROOT did not complain about these missing symbols, so that’s why you probably didn’t see a problem before, but at runtime you’d probably see a failure when the symbol is missing. Cheers,

But I don’t generate any library… only one executable which launch a graphical interface based on many classes. Does it means that I need to compile my package in a different way ?

Here is the cmake I am using

CMakeLists.txt (2.4 KB)

Ok so finally it works. I need to first generate a library this all my classes, and then compile the executable linked with the library.

Jérémie

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