RE: load a list of libs

From: Fine, Valeri <fine_at_bnl.gov>
Date: Mon, 10 Mar 2008 15:16:10 -0400


Hello Dmitry,

> The reason of my question is motivated by a simple idea.

My point was a simple one, "You can write LoadListOfLibs() yourself". The function you proposed us is useful (and ROOT team may be willing to add it ;). However, it is not as generic as you implied.

Normally, the function you proposed is NOT sufficient to meet the current framework need.

For example, what LoadListOfLibs() function should have done if let's say one of the libraries fails to be loaded?

> On the other hand G4 always provides a nice
> method similar to that in root-config. It can return me a line with all
> libraries like:
> -lG4_lib1 -lG4lib2 ... -lG4libN

What about:

g++ -o Root4G4.exe $ROOTSYS/main/src/rmain.cxx `root-config --cflags --glibs `your nice G4 config script here'

Is it what you want?

Best Regards

                         Valeri Fine


Brookhaven National Laboratory
Upton, NY 11973, USA
Phone: +1 631 344 7806
Fax: +1 631 344 4206
E-mail: fine_at_bnl.gov

> -----Original Message-----
> From: naumov_at_nusun.jinr.ru [mailto:naumov_at_nusun.jinr.ru]
> Sent: Monday, March 10, 2008 6:39 PM
> To: Fine, Valeri
> Cc: Dmitry Naumov; Dario Berzano; roottalk_at_cern.ch
> Subject: RE: [ROOT] load a list of libs
>
> Hi Valeri,
>
> thanks for your response. Well, this is again the same gSystem->Load()
> function. Certainly I could do this kind of loop...
>
> The reason of my question is motivated by a simple idea. I am using ROOT
> VMC in my application. If I run it from the root interpreter I use a macro
> which loads several dozens of Geant4 libraries. From release to release G4
> merges/splits/renames some libraries and I have to follow all these
> developments in that macro. On the other hand G4 always provides a nice
> method similar to that in root-config. It can return me a line with all
> libraries like:
> -lG4_lib1 -lG4lib2 ... -lG4libN
>
> and like this for several dozens of libraries. Therefore I though that it
> would be nice if instead of using a macro which loads one by one all the
> libraries I would simply ask root to load everything in one go. Well, one
> can say, please, split the line and use again gSystem->Load() substituting
> -lG4_lib1 by libG4lib1.so (thus analyzing the string). Certainly this is
> possible and quite easy to realize, while it would be a sort of
> comfortable to be able to load everything just by a line like:
> gSystem->LoadListOfLibs("")
>
> This is the point. Ok, if this is not possible I will proceed with a
> loop, thanks again, Dmitry
>
> >> Hi Dario,
> >>
> >> this I know. But this command seems to load only one library. Is there
> >> something like:
> >> root[] gSystem->LoadListOfLibs("-L/path_to_libs -lApp1 -lApp2 -lApp3");
> >
> > Yes, it does exist. Here you are ;-)
> >
> > {
> > TString lPath = gSystem->GetDynamicPath();
> > lPath+= ":path_to_libs";
> > gSystem->SetDynamicPath((const char*)lPath);
> > const char *libs[] = { "App1", "App2", "App3" };
> > for (int i = 0; i < sizeof(libs)/sizeof(char *); i++)
> > printf(" Loading %s %d\n", libs[i], gSystem->Load(libs[i]));
> >
> > }
> >
> > Hope this helps
> >
> > Valeri Fine
> > ---------------
> > Brookhaven National Laboratory
> > Upton, NY 11973, USA
> > Phone: +1 631 344 7806
> > Fax: +1 631 344 4206
> > E-mail: fine_at_bnl.gov
> >> Thanks, Dmitry
> >>
> >> Dario Berzano �����:
> >> > On Mon, Mar 10, 2008 at 6:06 PM, Dmitry Naumov <naumov_at_nusun.jinr.ru>
> >> wrote:
> >> >
> >> >> Dear roottalk,
> >> >>
> >> >> is there an implemented way to load a list of libraries made in the
> >> form:
> >> >> -L/path_to_libs -lApp1 -lApp2 -lApp3 ...
> >> >> from the root interpreter?
> >> >>
> >> >
> >> > Hi Dmitry,
> >> >
> >> > you can try gSystem->Load("library_name"). The documentation is
> >> > available here:
> >> >
> >> > http://root.cern.ch/root/html/TSystem.html#TSystem:Load
> >> >
> >> > Regards,
> >> >
> >
Received on Mon Mar 10 2008 - 20:17:19 CET

This archive was generated by hypermail 2.2.0 : Tue Mar 11 2008 - 11:50:01 CET