Hi Christian,
On Tue, 02 Apr 2002 19:50:08 +0100
cstrato@EUnet.at wrote
concerning "[ROOT] Problem compiling root test programs":
> Dear Rooters
>
> Due to diverse problems I had to reformat my HD and have now
> installed YellowDog Linux on my PowerBook since LinuxPPC no
> longer exists.
Ah, so you got around to do it :-) I'm just sad you didn't choose
Debian GNU/Linux for PPC instead.
> I could successfully compile root_v3.03.02 and run the tutorials.
> However, now I am not able to compile the test programs (or
> my own programs) due to the following error:
> [strato@localhost test]$ make
> Generating dictionary EventDict.cxx...
> rootcint: error while loading shared libraries: libCint.so:
> cannot load shared object file: No such file or directory
> make: *** [EventDict.cxx] Error 127
Erh, perhaps a bit more information would be good. Especially how
did you configure the source tree (exactly what options did you use,
in particular did you use --enable-rpath?).
Try also `ldd /home/strato/rt/root/bin/rootcint', and look for a line
like
libCint.so => <path> or `not found'
> Since I had the same problem some time ago with LinuxPPC 2000
> due to an error in the make file, see:
> http://root.cern.ch/root/roottalk/roottalk01/3032.html
> I suppose that my current problems may be caused by a similar
> problem, maybe once again in the following part:
> ifeq ($(ARCH),linuxppcegcs)
> # MkLinux with egcs/glibc
> CXX = g++
> CXXFLAGS = -O -Wall -fPIC
> LD = g++
> LDFLAGS = -O
> SOFLAGS = -shared
> #SOFLAGS = -shared -Wl,-soname
> endif
If the linker on PPC is the same as on i386, then I guess it should
support the -soname flag. However, I seem to remember, that on a PPC
you have a different last part (not `.so', but `.dyn'?, or is it only
when using MacOSX?) on shared library names. The argument to -soname
when creating the library _must_ be the name of the library made, or a
symlink to that library.
One think that bothers me a bit, is the absence of the `-rdynamic'
option in `CILIBS' and `SYSLIBS' in `config/Makefile.linuxppcegcs'.
Anyway, you should check if there is a file (or symlink) called
`libCore.so' somewhere where `ld.so' looks for libraries (all
directories listed in /etc/ld.so.conf, LD_LIBRARY_PATH, and rpath set
on executables). You should also check if you linker (probably `ld'
supports -soname):
prompt% ld --help
...
-h FILENAME, -soname FILENAME
Set internal name of shared library
> Could it be that SOFLAGS need a different definition with
> YellowDog Linux 2.1 than with LinuxPPC 2000?
>
> The following shows my PATH settings:
> [strato@localhost test]$ echo $PATH
> /usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/home/strato/bin:/home/strato/rt/root/bin
>
> [strato@localhost test]$ echo $LD_LIBRARY_PATH
> :/home/strato/rt/root/lib
Try taking out the `:' of the LD_LIBRARY_PATH. When you set
environment variables, always check them first,
csh:
if (! $?LD_LIBRARY_PATH) then
setenv LD_LIBRARY_PATH /home/strato/rt/root/lib
else
setenv LD_LIBRARY_PATH /home/strato/rt/root/lib:${LD_LIBRARY_PATH}
endif
sh:
if test "x$LD_LIBRARY_PATH" = "x" ; then
export LD_LIBRARY_PATH=/home/strato/rt/root/lib
else
export LD_LIBRARY_PATH=/home/strato/rt/root/lib:${LD_LIBRARY_PATH}
fi
or use the `path' utility, if installed:
csh:
setenv LD_LIBRARY_PATH `path -var LD_LIBRARY_PATH -b /home/strato/rt/root/lib`
sh:
export LD_LIBRARY_PATH=`path -var LD_LIBRARY_PATH -b /home/strato/rt/root/lib`
In your recent reply you said:
(I do not understand why Linux != Linux !!!)
Well, some parts of the OS (and not just the kernel) are chip
dependent. For example, are characters signed?, how long is a word
(int)?, and so on. The things _will_ propegate down to the source
code.
Yours,
Christian Holm Christensen -------------------------------------------
Address: Sankt Hansgade 23, 1. th. Phone: (+45) 35 35 96 91
DK-2200 Copenhagen N Cell: (+45) 28 82 16 23
Denmark Office: (+45) 353 25 305
Email: cholm@nbi.dk Web: www.nbi.dk/~cholm
This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:50:48 MET