Re: Incompatibility of libraries

From: Philippe Canal <pcanal_at_fnal.gov>
Date: Fri, 11 Mar 2011 13:50:25 -0600


Hi,

 > However I can't seem to modify the name of the LinkDef file and still compile it.  > Any idea how to work this around ? (I'm using the CMSSW framework to compile)

I suspect that CMS support will be able to help you find this information.

Cheers,
Philippe.

On 3/11/11 11:45 AM, Ricardo Eusebi wrote:
> Thanks, when doing that I get :
>
>
> nm libTAMUWWSpecialTools.so libTAMUWWMEPATNtuple.so |grep G__cpp_reset_tagtable
>
> 000000000002bc80 T G__cpp_reset_tagtableLinkDef
> 0000000000010170 T G__cpp_reset_tagtableLinkDef
>
> which if I understand correctly it suggest that my two identically named LinkDef files located in the different directories of
> each library are the cause of the conflict. However I can't seem to modify the name of the LinkDef file and still compile it. Any
> idea how to work this around ? (I'm using the CMSSW framework to compile)
>
> Thanks,
> Ricardo
>
> On 3/11/11 11:09 AM, Axel Naumann wrote:
>> Hi,
>>
>> this can be caused by both libraries containing a dictionary with the
>> same name. I.e. they might have two different dictionaries (different
>> content), but at creation time (rootcint) they were given the same file
>> name (e.g. G__Dict.cxx).
>>
>> You should be able to find out by comparing the output of
>>
>> nm libTAMUWWSpecialTools.so libTAMUWWMEPATNtuple.so |grep
>> G__cpp_reset_tagtable
>>
>> Cheers, Axel.
>>
>> Ricardo Eusebi wrote on 03/11/2011 05:13 PM:
>>> Hi,
>>> I'm working with ROOT 5.22/00d (branches/v5-22-00-patches_at_29532, May 19
>>> 2010) on Linux 2.6.18-194.32.1.el5 2011 x86_64 x86_64 x86_64 GNU/Linux
>>>
>>> I have a conflict between libraries that I cannot solve. Specifically I
>>> have the following two libraries, which (are supposed to) have
>>> absolutely no dependence between each other:
>>> -SpecialTools (which contains the class PhysicsProcess)
>>> -MEPATNtuple (which contains the class METree)
>>>
>>>
>>> I can load the library containing the PhysicsProcess class and works
>>> just fine
>>> root [0]
>>> gSystem->Load("../../lib/slc5_ia32_gcc43/libTAMUWWSpecialTools.so")
>>> (int)0
>>> root [1] PhysicsProcess * proc
>>> root [2]
>>>
>>> I can restart root and load the library containing the class METree and
>>> works fine as well
>>> root [0]
>>> gSystem->Load("../../lib/slc5_ia32_gcc434/libTAMUWWMEPATNtuple.so")
>>> (int)0
>>> root [1] METree * me
>>> root [2]
>>>
>>>
>>> But when I load both of them I can only see the first library's classes
>>> (true regardless of the order in which the libraries are loaded)
>>>
>>> root [0]
>>> gSystem->Load("../../lib/slc5_ia32_gcc434/libTAMUWWSpecialTools.so")
>>> (int)0
>>> root [1] PhysicsProcess * proc
>>> root [2]
>>> gSystem->Load("../../lib/slc5_ia32_gcc434/libTAMUWWMEPATNtuple.so")
>>> (int)0
>>> root [3] METree * me
>>> Error: Symbol METree is not defined in current scope (tmpfile):1:
>>> Error: Symbol me is not defined in current scope (tmpfile):1:
>>> (const int)0
>>> *** Interpreter error recovered ***
>>> root [4] PhysicsProcess * proc
>>> root [5]
>>>
>>> So my question is very general, giving a conflict between libraries how
>>> can I start debugging where in the libraries my problem is at ? If
>>> there is an incompatibility between these libraries how can I pinpoint
>>> the source of that error ?
>>>
>>>
>>> Thanks,
>>> Ricardo
>>>
>>>
>>>
>>
>
Received on Fri Mar 11 2011 - 20:50:32 CET

This archive was generated by hypermail 2.2.0 : Fri Mar 11 2011 - 23:50:01 CET