Hello all,
I’m trying to work with a build of the Subversion trunk (v5.27), and running into some dlopen errors when I try to import some other libraries from our local project.
ROOT 5.27/03 (trunk@33536, May 17 2010, 14:01:07 on linux)
CINT/ROOT C/C++ Interpreter version 5.17.00, Dec 21, 2008
Type ? for help. Commands must be C++ statements.
Enclose multiple statements between { }.
root [0] gSystem->Load("libsvx.so")
Warning in <TClassTable::Add>: class TSQLStatement already in TClassTable
dlopen error: /home/mlockner/local/lib/libRootmessage.so.0: undefined symbol: _ZN4ROOT17TGenericClassInfoC1EPKcS2_iRKSt9type_infoPKNS_13TInitBehaviorEPvPFvvEP16TVirtualIsAProxyii
*** Break *** segmentation violation
(snip stack trace that follows)
Someone pointed me to a tool called c++filt that can translate the cryptic symbol names. In this case, the _ZN4… symbol translates into:
ROOT::TGenericClassInfo::TGenericClassInfo(char const*, char const*, int, std::type_info const&, ROOT::TInitBehavior const*, void*, void (*)(), TVirtualIsAProxy*, int, int)
This would seem to correspond to a constructor found ca. line 39 of core/meta/src/TGenericClassInfo.cxx:
TGenericClassInfo::TGenericClassInfo(const char *fullClassname,
const char *declFileName, Int_t declFileLine,
const type_info &info, const TInitBehavior *action,
ShowMembersFunc_t showmembers, VoidFuncPtr_t dictionary,
TVirtualIsAProxy *isa, Int_t pragmabits, Int_t sizof)
: fAction(action), fClass(0), fClassName(fullClassname),
fDeclFileName(declFileName), fDeclFileLine(declFileLine),
fDictionary(dictionary), fInfo(info),
fImplFileName(0), fImplFileLine(0),
fIsA(isa), fShowMembers(showmembers),
fVersion(1),
fNew(0),fNewArray(0),fDelete(0),fDeleteArray(0),fDestructor(0), fDirAutoAdd(0), fStreamer(0),
fCollectionProxy(0), fSizeof(sizof),
fCollectionProxyInfo(0), fCollectionStreamerInfo(0)
{
// Constructor.
Init(pragmabits);
}
Now, the lines in the build for this file are:
bin/rmkdepend -R -fcore/meta/src/TGenericClassInfo.d -Y -w 1000 -- -pipe -m32 -Wall -W -Woverloaded-virtual -fPIC -Iinclude -DR__HAVE_CONFIG -pthread -D__cplusplus -- core/meta/src/TGenericClassInfo.cxx
g++ -O2 -pipe -m32 -Wall -W -Woverloaded-virtual -fPIC -Iinclude -DR__HAVE_CONFIG -pthread -o core/meta/src/TGenericClassInfo.o -c core/meta/src/TGenericClassInfo.cxx
However, I cannot establish that the aforementioned constructor is getting compiled into the object file, or thence into libCore.so. I also tried generating the intermediate assembler file, and the symbol doesn’t seem to be there either.
Is there something wrong that is causing no code to be generated for that constructor?
Thanks,
Matthew Lockner