Renaming and symlinking shared libraries

Alexander Leidinger Alexander at Leidinger.net
Tue Jul 4 05:43:12 UTC 2006


Quoting Alejandro Pulver <alepulver at FreeBSD.org> (from Mon, 3 Jul 2006  
14:29:07 -0300):

> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> On Mon, 03 Jul 2006 11:40:27 +0200
> Alexander Leidinger <Alexander at Leidinger.net> wrote:
>
>> Quoting Alejandro Pulver <alepulver at freebsd.org> (from Sat, 1 Jul 2006
>> 20:25:22 -0300):
>>
>> > AFAIK the symlinks would be (under lib/, in src->dest form) the
>> > following. This shows the renaming of libtest to libtest-2, with major
>> > version of 2.
>> >
>> > libtest-2.so -> libtest-2.so.2
>> > libtest-2.so.2 -> test2/libtest-2.so.2 (real)
>> >
>> > Inside test2/.
>> >
>> > libtest.so -> libtest-2.so
>> > libtest-2.so -> libtest-2.so.2 (real)
>> >
>> > Then I link a program with "cc -o test -L/usr/local/lib/test2 -ltest".
>> > I did it with lua4 but after linking 'ldd' says it can't find
>> > "libtest.so".
>> >
>> > Have I missed something?
>>
>> You have to ldconfig the test2 directory, else the run-time linker
>> will not find the lib (it doesn't know where to search for it).
>>
>> Bye,
>> Alexander.
>>
>
> Hello.
>
> Thank you for your reply.
>
> But then how do the databases/dbXX ports achieve the same result
> without it? I thought it should find it since there is a symlink
> in /usr/local/lib that points to it. I want that when I compile a
> program with -L/usr/local/lib/test -ltest it actually links to test-2
> for example. Please look at the dbXX ports to see what I mean.

If you link with "-ltest-2" or if you link lib/libtest.so ->  
lib/test2/libtest-2.so, it should work, else you have to use the new  
LDCONFIG infrastructure.

Bye,
Alexander.

-- 
One man's constant is another man's variable.
		-- A.J. Perlis

http://www.Leidinger.net    Alexander @ Leidinger.net: PGP ID = B0063FE7
http://www.FreeBSD.org       netchild @ FreeBSD.org  : PGP ID = 72077137



More information about the freebsd-ports mailing list