Re: [ROOT] Loading Shared Libraries...

From: Christian Holm Christensen (cholm@hehi03.nbi.dk)
Date: Thu Nov 06 2003 - 10:22:47 MET


Hi John,

John Pretz <pretz@umdgrb.umd.edu> wrote concerning
  [ROOT] Loading Shared Libraries... [Wed, 5 Nov 2003 22:53:06 -0500 (EST)] 
----------------------------------------------------------------------
> Hi,
> 
> I have an application that has several sub-packages.  Each package is 
> compiled into its own shared library.  The packages are compiled with 
> standard makefiles and I'm trying to arrange it so that when these 
> packages are built that they can be loaded into a root session by default 
> from a central location taking into account all the dependencies of the 
> shared libraries so that they are loaded in the right order.
> 
> I thought I had it working.  When each package is built it makes a 
> small root script which declares what its dependencies are.  There's a 
> .rootrc file in the central directory.  It calls for a rootlogon.c script 
> which searches through the package directories for the .so files and these 
> dependency-declaring scripts.  It calls each script to find out the 
> dependencies and then loads the libraries in the correct order.  

Another way to make this happen automatically, is to link your shared
libraries to it's dependencies.   A concrete example could be
libEGPythia6.so which depends on libPythia6.so.  A command line like 

   OBJECTS	= ...
   SO		= g++ -shared
   SOFLAGS	= -Wl,soname,$@

   libEGPythia6.so:	$(OBJECTS)
		$(SO) $(SOFLAGS) -o $@ $^ -L/path/to/libPythia6	-lPythia

when you load this library dynamically using 

  dlopen("libEGPythia.so", RTLD_GLOBAL|RTLD_NOW)

(and by extension `TSystem::Load'), the library `libPythia.soŽ is
pulled in automatically too. 

Caveat: Works on GNU/Linux - I have no idea how it works on other UNIX
systems, MacOSX, or Windoze.

BTW, you get this for free with Autotools :-)

Yours, 

 ___  |  Christian Holm Christensen 
  |_| |	 -------------------------------------------------------------
    | |	 Address: Sankt Hansgade 23, 1. th.  Phone:  (+45) 35 35 96 91
     _|	          DK-2200 Copenhagen N       Cell:   (+45) 24 61 85 91
    _|	          Denmark                    Office: (+45) 353  25 404
 ____|	 Email:   cholm@nbi.dk               Web:    www.nbi.dk/~cholm
 | |



This archive was generated by hypermail 2b29 : Thu Jan 01 2004 - 17:50:16 MET