Re: [ROOT] Crashing before main()

From: Fons Rademakers (Fons.Rademakers@cern.ch)
Date: Wed May 26 2004 - 13:26:20 MEST


Hi Christian,


On Wed, 2004-05-26 at 12:47, Christian Holm Christensen wrote:
> Hi Rene,
> 
> On Wed, 2004-05-26 at 08:41, Rene Brun wrote:
> > Hi Christian,
> > 
> > In ROOT version 4.00/04 you can 
> >  ./configure --enable-explicitlink
> > to solve the problem discussed in your mail.
> 
> Ah, so you implemented it.  I remember Fons and I discussed that some
> time ago. 
> 
> I hope you remember to set the `rpath' when `--enable-rpath' is given to
> `configure' - otherwise, it's pretty meaningless. 
> 
Yes, rpath will be taking into account when specified.

> However, it doesn't change the fact that users have to, by hand specify
> the ROOT libraries the client libraries depend on.
> 
> > Also note that with the version currently in CVS, the automatic loading
> > of a shared lib is implemented, eg
> > root > TLorentzVector v;
> > This statement in CINT will automatically do gSystem->Load("libPhysics");
> 
> But that's an entirely different issue.  This has to do with your plugin
> manager.  I think I brought up the issue some time ago with Fons, that
> the plugin manager should really be used more heavily.  What I had in
> mind, was that libraries like `libFumili' are really plugins and not
> libraries at all.   Hence, they should live in a separate directory
> (e.g., <prefix>/lib/root/plugins), and really be linked like `libtool
> -module' would do (on windows, a dll without a corresponding lib file). 
> 
> Maybe, you could extent the system.rootmap functionality a bit further,
> so that clients can add more files of that type to some directory
> (/etc/root/plugins), as well as some place to look for additional files
> with lines like `+Plugin.<...> ......'.  In that way, client code can
> easily integrate it's code into ROOT. 
> 
> > The rootmap file contains all the dependencies for a given class
> > and the corresponding shared libs will be loaded in the right order.
> 
> Basically the output of `nm -C', massaged a bit, right? 
> 
That is what I tried before but was not really portable. The portable
solution now is to use all the information already in the ROOT Makefile.
For each library we know the library name (in Module.mk), we know the
list of classes (in the LinkDef.h, also known in the Module.mk) and we
know the dependencies (in config/Makefile.depend, this file is needed by
Win32 and AIX and for explicit linking). This procedure is of course
extremely fast compared to nm on all the ROOT classes, let alone the
dependency analysis that would be needed.

Cheers, Fons.


> Yours,
-- 
Org:    CERN, European Laboratory for Particle Physics.
Mail:   1211 Geneve 23, Switzerland
E-Mail: Fons.Rademakers@cern.ch              Phone: +41 22 7679248
WWW:    http://www.rademakers.org/fons/      Fax:   +41 22 7679480



This archive was generated by hypermail 2b29 : Sun Jan 02 2005 - 05:50:08 MET