[ROOT] statically linked executable

From: Rüdiger Berlich (ruediger.berlich@hik.fzk.de)
Date: Mon Jun 23 2003 - 00:55:53 MEST


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