All the fortran libraries (hdecay/hdecay.o hdecay/haber.o
hdecay/feynhiggs.o) are linked!!!
However when I do a grep s_wsle * the only files that contain it are
the *.o files. ( no fortran source file has it)
Seems to me (this may be a wild guess) that s_wsle is a reference to a
fortran built function ( like atan or so)
So my two questions remain :
A- is this because the fortran libraries hdecay/*.o have not been
compiled with the Position Independent Code option ?
How do I compile with that option????
B- Is there away to circunvent this that do not require the
recompilation of root ?
Thanks a lot
Ricardo
Philippe Canal wrote:
> Hi,
>
> You should link your library against the fortran library (I think this
> is where s_wsle comes from).
>
> Cheers,
> Philippe.
>
> ------------------------------------------------------------------------
> *From:* Ricardo Eusebi [mailto:eusebi@fnal.gov]
> *Sent:* Thursday, October 21, 2004 10:41 AM
> *To:* roottalk
> *Cc:* pcanal@fnal.gov
> *Subject:* relocation errors and invalid ELF error
>
> Hi,
> I'm (trying to) implement a Root C++ interface to the fortran program
> HDecay.
> I can succesfully create a executable that calls the proper fortran
> routines. However when trying to link to root everything seems to fail.
> I took a look at http://root.cern.ch/root/HowtoCERNLIB.html but that
> particular case refers to CERN routines compiled without the option
> Position Independent Code (whatever that means).
>
> So I essentially follow the third way in the above web page up to the
> step 2 exclusive. I do not recompile root, nor I want to.
>
> so when loading the libraries I get
>
> root [0] gSystem->Load("libHDecay.so")
> (int)0
> root [1] HDecay a
> root [2] HDECAY_InputVars in = a.DefineInputs()
> root [3] BR_HC B = a.GetHiggsBR(120,in)
> /home/cdfsoft/products/root/v3_05_04dKCC_4_0/Linux+2.4/bin/root.exe:
> relocation error:
> /mnt/autofs/misc/people/eusebi/root_macros/./libHDecay.so: undefined
> symbol: read_hdec_
>
> I thought that's because I didn't link the fortran libraries. So I
> added the libraries (hdecay/*.o) in the makefile
> libHDecay.so : HDecay.o hdecay/hdecay.o hdecay/haber.o
> hdecay/feynhiggs.o HDecayDict.o
> $(LD) $(SOFLAGS) $(LDFLAGS) $^ $(OutPutOpt) $@
>
> This compiles fine again, but the error in root this time is not
> relocation but this :
>
> root [0] gSystem->Load("libHDecay.so")
> dlopen error:
> /mnt/autofs/misc/people/eusebi/root_macros/./libHDecay.so: undefined
> symbol: s_wsle
> Load Error: Failed to load Dynamic link library
> /mnt/autofs/misc/people/eusebi/root_macros/./libHDecay.so
> (int)(-1)
> *** Interpreter error recovered ***
>
>
> QUESTIONS :
> A- is this because the fortran libraries hdecay/*.o have not been
> compiled with the Position Independent Code option ?
> How do I compile with that option????
>
> B- Is there away to circunvent this that do not require the
> recompilation of root ? At FermiLab we change root versions pretty often.
>
> Thanks a lot
>
> Ricardo
>
>
>
>
>
>
>
>
>--
> --------------------------------------------------------------------
>| Ricardo Eusebi | Office : CDF trailer 168-"O" |
>| High Energy Physics | Phone : (630) 840 8622 |
>| University of Rochester | email : eusebi@fnal.gov |
> --------------------------------------------------------------------
>| Fermi National Accelerator Laboratory |
>| CDF - MS318 . PO Box 500 |
>| Batavia 60510, Illinois. |
> --------------------------------------------------------------------
>
>
--
--------------------------------------------------------------------
| Ricardo Eusebi | Office : CDF trailer 168-"O" |
| High Energy Physics | Phone : (630) 840 8622 |
| University of Rochester | email : eusebi@fnal.gov |
--------------------------------------------------------------------
| Fermi National Accelerator Laboratory |
| CDF - MS318 . PO Box 500 |
| Batavia 60510, Illinois. |
--------------------------------------------------------------------
This archive was generated by hypermail 2b29 : Sun Jan 02 2005 - 05:50:10 MET