:: Re: [DNG] Managing shared libraries
Startseite
Nachricht löschen
Nachricht beantworten
Autor: Arnt Karlsen
Datum:  
To: dng
Betreff: Re: [DNG] Managing shared libraries
On Sat, 7 Oct 2023 08:29:56 -1000, Joel wrote in message
<20231007182956.tkekgynvgmhvnxwg@sprite>:

> On Sat, Oct 07, 2023 at 08:02:37PM +0300, Boian Bonev via Dng wrote:
> > Hi,
> >
> > On Thu, 2023-10-05 at 00:06 +0200, aitor wrote:
> > > Hi Joel,
> > > On 4/10/23 3:06, Joel Roth via Dng wrote:
> > > A likely way forward is to place the 6.3
> > > sources in /usr/include/readline and compile
> > > against that.
> > > You can define a separate pkgconfig file for 6.3, say
> > > "readline6.pc", as follows:
> > >
> > > prefix=/usr
> > > exec_prefix=${prefix}
> > > libdir=${prefix}/lib
> > > includedir=<put_here_the_path_you_want>
> > >
> > > Name: Readline
> > > Description: Gnu Readline library for command line editing
> > > URL: http://tiswww.cwru.edu/php/chet/readline/rltop.html
> > > Version: 6.3
> > > Requires.private: tinfo
> > > Libs: -L${libdir} -lreadline
> > > Cflags: -I${includedir}
> > >
> > > Note that I've also moved the path to the shared library from
> > > "/usr/lib/x86_64-linux-gnu" to "/usr/lib". Obviously, you need to
> > > create the symlinks at "/usr/lib" for 6.3.
> > >
> > > In doing so, both versions 6.3 and 8.2 can coexist.
> > > Now, to link against version 6.3:
> > > `pkg-config --cflags --libs readline6`
> > >
> > > I would also like to compile against 8.1, but can I (and do
> > > I need to) point the symlink at 8.1 without breaking things
> > > like bash that depend on version 8.2?
> > > I don't think it would break bash. But this is a guess. Either
> > > way, you can always use LD_PRELOAD. For example:
> > > $ LD_PRELOAD=/lib/x86_64-linux-gnu/libreadline.so.8
> > > Cheers,
> > > Aitor.
> >
> > That will not work - -lreadline will use
> > /usr/lib/ARCH/libreadline.so which is a symlink that comes from the
> > -dev package and is always pointing to the latest version. The
> > older versions of the shared library provide only
> > /usr/lib/ARCH/libreadline.so.VER for not breaking old programs that
> > were linked to an older version of the library.
> >
> > Manually changing the link is OK - that will not break anything.
> >
> > The proper way to compile against an older version is to install the
> > respective -dev package (that will conflict with all newer/older
> > -dev packages).
> >
> > A side suggestion to the OP is to check libedit or linenoise, maybe
> > they already have some perl bindings...
>
> Hi Boian and others, many thanks for the informative replies,
>
> I've found a solution that doesn't require an older readline.


.._what_ "solution that doesn't require an older readline" did you find?

..a simple pointer might be helpful to the next guy or gal searching
this list for a solution that doesn't require an older readline.
Prepending "Solved this way" onto the "Re: [DNG] Managing shared
libraries" Subject: line, might also help people find your solution,
which might be the right solution for their problen. Or not. This
whole thread and your found solution should help them figure that out.

> happy hacking to all! and to all a good night!
>
>



--
..med vennlig hilsen = with Kind Regards from Arnt Karlsen
...with a number of polar bear hunters in his ancestry...
Scenarios always come in sets of three:
best case, worst case, and just in case.