RE: [ROOT] Recompilation of programs.

From: Philippe Canal (pcanal@fnal.gov)
Date: Fri Aug 29 2003 - 19:37:16 MEST


Hi Dmitry,

As far as I can tell you are not using KCC (are you?).  ROOT can be compiled
and
used with many compiler,including g++.  However, currently, you to compile
all you C++ code with the same compiler so many developer have to use
whichever
compiler their experiment standardized on.

The original problem 'some things disappear/are undefined' after I reload a
shared library is there on all compiler (except KCC because, with KCC you
can NOT
reload anyway).

Cheers,
Philippe

-----Original Message-----
From: owner-roottalk@pcroot.cern.ch
[mailto:owner-roottalk@pcroot.cern.ch]On Behalf Of Dmitry A. Shtol
Sent: Friday, August 29, 2003 9:14 AM
To: Philippe Canal
Cc: roottalk@pcroot.cern.ch
Subject: RE: [ROOT] Recompilation of programs.



Hi,
On Thu, 28 Aug 2003, Philippe Canal wrote:


>
> The warning is related to a bug in the KCC compiler and does not apply
> to other compiler.

Is there a method to use another compiler in ROOT instead of kcc (for
example g++)? Maybe it will solve some problems?
Thank you.

>
> However, if you unload a shared library, anything that uses this shared
> library is potentially invalid (because code it depends on is no longer
> accessible).  CINT tries to make intelligent decision on what should be
> invalided (and thus unloads, deletes, scratches) but does not always
> gets it 'right'.   This explains the disappearance of the variable 'x'.
>
> As a rule of thumb you can assume that when you 'reload' a library
> __anything__ that was created (and that CINT knows about) since the
> previous load is delete/removed.
>
> Cheers,
> Philippe.
>
> -----Original Message-----
> From: owner-roottalk@pcroot.cern.ch
> [mailto:owner-roottalk@pcroot.cern.ch]On Behalf Of Dmitry A. Shtol
> Sent: Wednesday, August 27, 2003 11:13 PM
> To: roottalk@pcroot.cern.ch
> Subject: [ROOT] Recompilation of programs.
>
>
> Hi,
> On "ROOT education at Fermilab".
> (http://www-root.fnal.gov/root/class/Day2_files/v3_document.htm)
> In "ACLiC Advantages" there are following statement:
> "With the KCC compiler can only load each C++ shared library once per root
> session, this also means that you can not use the .U command to unload the
> shared library. When adding shared libraries one after another, and then
> removing one that has been added previously to others, the ones added
> after the one to be removed will also be removed."
>
> Does it mean, that I must restart ROOT always when I want to recompile a
> program after some changes? Is it a way to recompile program without
> restart?
>
> When I try to do it, all varibles are deleted. Example:
> (ExpEeSelect_c.so loaded before through a
> command gROOT->LoadMacro("ExpEeSelect_C.so") in rootlogon.C)
>
> root [1] double x=1
> root [2] x
> (double)1.00000000000000000e+00
> root [3] .sh
> bash$ touch ExpEeSelect.C
> bash$ exit
> root [4] .L ExpEeSelect.C+
> Warning in <ACLiC>: unmodified script has already been compiled and loaded
> Warning in <ACLiC>: it will be regenerated and reloaded!
> Info in <TUnixSystem::ACLiC>: creating shared library
> /home/shtol/root/./ExpEeSelect_C.so
> Warning in <TClassTable::Add>: class ExpEeSelect already in TClassTable
> root [5] x
> Error: Symbol x is not defined in current scope  FILE:(tmpfile) LINE:1
> *** Interpreter error recovered ***
>
> What I can do with this problem?
>
> Thank you.
>
> ==============================================================
> Dmitry A. Shtol                        (SND group)
> Budker Institute of Nuclear Physics
>



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