[cffi-devel] librt soname

Daniel Herring dherring at tentpost.com
Sat Jul 4 02:53:47 UTC 2009


On Fri, 3 Jul 2009, Andy Hefner wrote:

> On 7/3/09, Luis Oliveira <luismbo at gmail.com> wrote:
>> It used to be librt.so.1, but it was changed to librt.so, not sure
>>  why. Is there any system where "librt.so.1" doesn't work but
>>  "/lib/librt.so.1" would?

Possibly, but only on perverse systems.  For example 
/usr/local/lib/librt.so.1 is broken but found before the functional 
/lib/librt.so.1.


> Changing /usr/lib to /lib was random flailing around on my part. I'm
> not sure where it's supposed to live.  On the older kubuntu VM I've
> been doing some tests in, it has:
>
>   /lib/librt-2.6.1.so
>   /lib/librt.so.1 -> /lib/librt-2.6.1.so
>   /usr/lib/librt.so -> /lib/librt.so.1
>
> For reasons unknown to me, despite the /usr/lib/librt.so existing, it
> couldn't find librt until I changed it to librt.so.1.

Some points wrt C/C++ linking:
- Libraries don't "belong" anywhere; the distro/end user gets to choose 
which libs go where.  Shadowing system libs is a feature.
- librt.so.1 is more specific than librt.so; for example librt.so could 
point to librt.so.2.
- Different unix OSs have different ways of versioning libraries.
- On linux, shared libraries are usually loaded by ld.so; see `man ld.so`. 
CL probably couldn't find librt.so because it was in the less standard 
/usr/lib directory whereas librt.so.1 was in /lib.

Later,
Daniel




More information about the cffi-devel mailing list