guile-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Guile 1.5.6 beta available for testing.


From: Steve Tell
Subject: Re: Guile 1.5.6 beta available for testing.
Date: Mon, 11 Mar 2002 01:33:05 -0500 (EST)

Is it possible to build guile-1.5.6 and install it into a private prefix
on a system that already has guile-1.4 shared libs in /usr/lib?

On a redhat linux 7.1 system, with guile-1.4 installed from RPMs, I did
"./configure --prefix=/usr/guile-1.5.6", make, and make install. The
resulting /usr/guile-1.5.6/bin/guile works alone, but gives the dreaded
"file: "libguilereadline", message: "file not found" when trying to
(use-modules (ice-9 readline)).


Using strace revealed attempts to open libguile.so.9, the guile-1.4 shared
lib, which looked quite bizarre.
Indeed, running "ldd" on the /usr/guile-1.5.6/lib/libguilereadline.so 
shows that it had a depencency on libguile.so.9


Studying the output of "make install" in the guile-readline directory
revealed where "libtool --mode=install" went astray.  It ran a "libtool
--mode=relink" which in turn generated this command:

 gcc -shared  readline.lo  -Wl,--rpath -Wl,/usr/guile-1.5.6/lib
 -L/usr/lib -L/usr/guile-1.5.6/lib -lguile -lreadline -lncurses
 -Wl,-soname  -Wl,libguilereadline.so.14 -o .libs/libguilereadline.so.14.1.0

In which the "-L/usr/lib -lguile" combination causes the old libguile from
/usr/lib to be found first.  Manually moving "-L/usr/lib" later on the
command line or removing it entirely produces a working libguilereadline.so.

All of the srfi .so's are afflicted by the same problem.

I guess this may be more of a libtool problem, but is there any hope of
helping libtool do the right thing here?  I'm certain that I don't know
nearly enough about why libtool does what it does.  But it seems that
using -L and -l and hoping for ld to find the right things is inherently
dangerous here.  One wonders why libtool couldn't get an absolute path to
the correct libguile.so by chasing the chain of dependency_libs in the .la
files, and pass that to gcc.  Somthing like this seems to work:

 gcc -shared  readline.lo  -Wl,--rpath -Wl,/usr/guile-1.5.6/lib
 /usr/guile-1.5.6/lib/libguile.so -lreadline -lncurses   -Wl,-soname
 -Wl,libguilereadline.so.14 -o .libs/libguilereadline.so.14.1.0

Having to build a chrooted universe that emulates a guile-free system in
order to build guile (or make guile RPM/deb/whatever packages) is going to
be highly inconvenient.


FWIW, someone else asked this very question (without a response) quite
recently on the libtool mailing list:  
http://mail.gnu.org/pipermail/libtool/2002-March/006142.html

Steve


--
Steve Tell  address@hidden 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]