Re: [ROOT] statically linked executable

From: Rene Brun (Rene.Brun@cern.ch)
Date: Mon Jun 23 2003 - 09:23:18 MEST


Hi Rudiger,

As you have found out, Root assumes a working environment with shared libs and a
plug-in manager.
It should be quite simple to run in pure statically linked mode with
no references to external files and with a reduce functionality: no calls
to the interpreter requiring access to include files, etc.

We are willing to add a run option to support this mode of operation
such that you do not get warnings/errors in case of missing files at
initialisation time.
Since you have successfully run in this mode, did you find all the places
in the code that should be protected/modified ?

Rene Brun


Rüdiger Berlich wrote:
> 
> Hi there,
> 
> I'm using a program that has some compiled-in Root functions
> (such as booking and filling histograms, interfacing to trees
> -- or rather : chains, and integration of histograms). No graphics
> output is done and I do not invoke the interpreter itself (i.e., I
> never call TApplication or TRint). My assumption is now that
> I'm dealing with only compiled functions, and that there is no
> hidden usage of the interpreter. If so, I do not need
> the header files and libraries associated with cint. Correct ?
> The program is linked with "-static -lRoot -ldl"
> 
> I cannot use a dynamically linked executable, as the target platform
> (indeed a cluster, as this is an MPI application) doesn't have the
> correct C-libraries installed. I work and compile on a SuSE 8.2 system
> and run the programs on a Red Hat 7.2 cluster. I cannot compile
> my programs on a cluster machine, as only g++ with a version
> > 3.2 seems to be able to handle my application. So I need a static
> executable.
> 
> If I start my program, each instance of the MPI application emits the error :
> 
> Error: cannot open /opt/root/share/root/cint/MAKEINFO
> !!! There are examples of MAKEINFO files under
> /opt/root/share/root/cint/platform/ !!!
> Please refer to these examples and create for your platform
> dlopen error: /tmp/iJtfkg_cintNM: invalid ELF header
> Load Error: Failed to load Dynamic link library /tmp/iJtfkg_cintNM
> 
> as if cint was started somewhere (which it isn't explicitly). What's
> going on here ? And how can I stop cint from being used when
> I only want to fill a histogram from a tree and integrate the histogram ?
> 
> The program doesn't exit, though, and henceforth emits the
> correct results coming from the integration of the histograms
> (checked on the system I compiled the application on,
> which has root/cint below /opt/root -- no error message on that
> machine).
> 
> What are the effects of this error ?
> 
> On a related note : I recently asked a question regarding the
> integration of root/cint as an extension language into another application.
> This works like a charm. There is however a similar problem to those
> mentioned above. When the interpreter starts it tries to load various dynamic
> libraries. If my application was compiled on a machine with incompatible
> symbols (again this problem arises when using SuSE 8.2 for compilation
> and Red Hat 7.2 for execution) I get errors when the dynamic
> libraries are loaded. I guess there is nothing I can do about that.
> 
> In any case : I really love this tool. Root is great - thanks a lot !!!
> 
> Kind Regards / Mit freundlichen Grüßen,
> Rüdiger Berlich
> 
> --
> Institut fuer Experimentalphysik I
> Ruhr-Universitaet Bochum
> Tel. +49 (0)7247 825678
> ruediger@berlich.de



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