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