Re: [ROOT] Problem compiling root test programs

From: cstrato@EUnet.at
Date: Sun Apr 07 2002 - 18:36:54 MEST


Dear Christian, Damir, Jiri

Thank you all for your help.
I followed some of your suggestions and could finally solve the problem.

My first trial:
[strato@localhost tx]$ echo $LD_LIBRARY_PATH
:/home/strato/rt/root/lib
[strato@localhost tx]$ export LD_LIBRARY_PATH=/home/strato/rt/root/lib
[strato@localhost tx]$ echo $LD_LIBRARY_PATH
/home/strato/rt/root/lib
[strato@localhost tx]$ gmake -f Makefile4DMS
Generating dictionary DMSDict...
rootcint: error while loading shared libraries: libCint.so: cannot load shared object file:
No such file or directory
gmake: *** [DMSDict.cxx] Error 127

My second trial:
[strato@localhost tx]$ rootcint -f DMSDict.cxx -c DMS.h DMSLinkDef.h
[strato@localhost tx]$ gmake -f Makefile4DMS
g++ -O -Wall -fPIC -fsigned-char -I/usr/X11/include -I/home/strato/rt/root/include -c
DMSDict.cxx
g++ -shared -O DMS.o DMSDict.o -o  libDMS.so

As you see, rootcint can create the dictionary, and running the makefile
again finally creates the library. However, the makefile still did not work.

Third trial:
I configured root with --enable-rpath and recompiled root.
This did not help either.

Fourth trial:
I added ../root/lib to /etc/ld.so.conf and run ldconfig.
This resulted in the following interesting observation:
a, for root configured with --disable-rpath everything is now OK!
b, for root configured with --enable-rpath I get the same rootcint error as before.

It seems that exporting LD_LIBRARY_PATH and/or storing it in the home
directory in .bash_profile is not sufficient.
You have to store the path in /etc/ld.so.conf.
Maybe this should be mentioned in the root manual.

Thank you once again for your help.

Best regards
Christian


BTW,this is my makefile: Any comments how to do it better?

#--------start makefile-------------------
# shell: gmake -f Makefile4DMS
#
# Copyright (c) 2000 Rene Brun and Fons Rademakers
#
# Author: Christian Stratowa, 23 March 2002

ARCH          = linuxppcegcs

CXX           =
ObjSuf        = o
SrcSuf        = cxx
ExeSuf        =
DllSuf        = so
OutPutOpt     = -o

ROOTCFLAGS   := $(shell root-config --cflags)
ROOTLIBS     := $(shell root-config --libs)
ROOTGLIBS    := $(shell root-config --glibs)


ifeq ($(ARCH),linuxegcs)
# Linux with egcs (>= RedHat 5.2)
CXX           = g++
CXXFLAGS      = -O -Wall -fPIC
LD            = g++
LDFLAGS       = -O
SOFLAGS       = -shared
endif

ifeq ($(ARCH),linuxppcegcs)
# MkLinux with egcs/glibc
CXX           = g++
CXXFLAGS      = -O -Wall -fPIC
LD            = g++
LDFLAGS       = -O
SOFLAGS       = -shared
endif


CXXFLAGS     += $(ROOTCFLAGS)
LIBS          = $(ROOTLIBS) $(SYSLIBS)
GLIBS         = $(ROOTGLIBS) $(SYSLIBS)

#------------------------------------------------------------------------------

DMSO       = DMS.$(ObjSuf) DMSDict.$(ObjSuf)
DMSS       = DMS.$(SrcSuf) DMSDict.$(SrcSuf)
DMSSO      = libDMS.$(DllSuf)


OBJS          = $(DMSO)
PROGRAMS      = $(DMSSO)

#------------------------------------------------------------------------------

.SUFFIXES: .$(SrcSuf) .$(ObjSuf) .$(DllSuf)

all:            $(PROGRAMS)

$(DMSSO):    $(DMSO)
                $(LD) $(SOFLAGS) $(LDFLAGS) $^ $(OutPutOpt) $@

clean:
  @rm -f $(OBJS) core

.SUFFIXES: .$(SrcSuf)

###


DMS.$(ObjSuf): DMS.h
DMSDict.$(SrcSuf): DMS.h DMSLinkDef.h
 @echo "Generating dictionary DMSDict..."
 @rootcint -f $@ -c $^

.$(SrcSuf).$(ObjSuf):
 $(CXX) $(CXXFLAGS) -c $<
#---------end makefile---------------



cstrato@EUnet.at wrote:

> Dear Damir, Christian and Jiri
>
> Thank you all for your suggestions, which I will try.
> First I will try to set  the LD_LIBRARY_PATH again, since I also believe
> that this could be the error. However, I was not able to find out
> where this variable is stored or should be stored. Do you know where
> I can find it?
>
> Sorrowly, currently I have also a hardware problem, so that I can
> turn on my PowerBook only sporadically. So testing will be slow.
>
> Thank you once again.
> Best regards
> Christian



This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:50:48 MET