guile-user
[Top][All Lists]
Advanced

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

Re: 1.6.0 problems with libguilereadline-v-12 and fix


From: Rob Browning
Subject: Re: 1.6.0 problems with libguilereadline-v-12 and fix
Date: Thu, 19 Sep 2002 17:06:18 -0500
User-agent: Gnus/5.090006 (Oort Gnus v0.06) Emacs/21.2 (i386-pc-linux-gnu)

Neil Jerram <address@hidden> writes:

> Or, to put it another way, proposing something concrete is more likely
> to obtain a clear response from the libltdl people than saying `we
> don't know what to do, what do you think?'.

Well I'm presuming they have a lot more experience with the problem,
especially cross-platform, than I do.  Things I'd suggest without
knowing any better:

  - versioned open: lt_dlopen_interface (char *name, int interface_num),
    where number is the libtool interface number that needs to be
    satisfied.

  - this would probably require a versioned .la file or something
    similar, perhaps libfoo.la.A.B.C.  This would have affects on
    compile time, build time, install time, and runtime.

  - see if it's possible to have libltdl use the same algorithm that
    ld.so does on any given platform to compute the library to load.
    Ideally, the search algorithm might be provided on platforms where
    it's feasible by libc or similar low-level library.

I've asked about this on the libtool side before on a couple of
occasions, but have had no response, though perhaps I somehow
approached them poorly.

> (On versioning, I think that speaking with the libltdl people is
> exactly the right thing to do.  But AFAIU versioning is an orthogonal
> issue to the library location one, and a more complex one where
> libtool people are likely to have thought much more than us already.)

They're related in the sense that having versioned .la files means
that you at least don't have to use path or naming tricks for the
common case where you have two binary incompatible versions of libfoo.

Without the versioned dlopen, you have to either use separate
subdirectories, or naming hacks (we chose the latter in guile -- hence
libguilereadline-v-12) to make sure you load the one you meant to.  As
it stands, (dynamic-link "libfoo") might get you *any* libfoo.

If we had versioning, then we could just put both versions of the
library in the same directory (/usr/lib, or whatever), and say

  (dynamic-link "libfoo" 9)
or
  (dynamic-link "libfoo" 12)

and let libltdl figure it out the same way ld.so does for
compile/launch time links.

You're right though, that even with this fix, and with a modified
libltdl that respects the same things that ld.so does, you still have
some of the same "do we use -rpath, require LD_LIBRARY_PATH, or
something else" questions for guile when it's installed outside of
/usr or /usr/local.

Requiring LD_LIBRARY_PATH to be set right is the most common approach
I've seen, but that doesn't mean we have to do things that way.

-- 
Rob Browning
rlb @defaultvalue.org, @linuxdevel.com, and @debian.org
Previously @cs.utexas.edu
GPG=1C58 8B2C FB5E 3F64 EA5C  64AE 78FE E5FE F0CB A0AD




reply via email to

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