On Sunday 19 June 2005 18:42, Matthias Andree wrote:
> > .so's are only included in -devel packages because their only use is when
> > linking.
>
> False.

True. Let me explain why.

> The linker, when linking a shared object, just writes a line 
> "bind library libfoo.so.4.2 at run time" into the program, and this
> exact library (for ELF, use readelf or objdump to look for "SONAME" and
> "NEEDED" attributes) is then linked when the program is run.

That is true.

> The .so file without .4.2 suffix (the exact numbers are an arbitrary
> example here) is indeed only needed at link time, but the variant that
> matches the SONAME of the library that was linked against is also needed
> at runtime.

That is also true.

> Emulating the library search characteristics of the particular system's
> linker is a different task though, and doing this incompletely can
> indeed cause trouble finding runtime libraries.

That's also true.

> So you may have:
>
> libfoo-1.2.3-4.rpm containing:
> lib/libfoo.so.4.2
> man/man7/foo.7.gz
> share/doc/foo/README
>
> libfoo-devel-1.2.3-4.rpm containing:
> lib/libfoo.a (static lib)
> lib/libfoo.so (convenience link to libfoo.so.4.2)
> man/man3/foo.3.gz
> include/foo.h

That's also true.

You haven't explained why my statement ".so's are only included in -devel 
packages because their only use is when linking" is false. I have agreed with 
everything you have written, and I seem to be missing that critical part. You 
have even provided an example where libfoo.so is in the -devel rpm, just as I 
said.

Reply via email to