.so's in devel packages...
nmo.marques at gmail.com
Mon Jun 18 19:59:07 UTC 2012
Thanks, this helps a lot understanding a bit more around shared libraries;
2012/6/18 Adam Williamson <awilliam at redhat.com>
> On Mon, 2012-06-18 at 18:23 +0100, Nelson Marques wrote:
>> Hi all,
>> I have a doubt regarding the '.so's' in devel packages... From my
>> understanding they go in devel packages to allow the installation of
>> several packages with different versioning....
> Not really, no. They go in -devel packages because the only time it's
> actually appropriate to use a library by referring to its unversioned
> name is when you're compiling another application against it. It's never
> safe for anything to access a library at runtime via an unversioned name
> because there is no guarantee of stability; you can't be at all sure
> that the version of the library you're calling is actually capable of
> doing what you're asking it to do. Since the only use of the unversioned
> 'instance' (symlink, in Fedora...) of a library is in development,
> naturally it goes in the devel package. We can take advantage of this in
> generating dependencies, and we do, which is why it's important not to
> put the .so file in a runtime package, or that runtime package will get
> a bunch of automatically generated dependencies on -devel packages.
> The whole system of naming and versioning of shared libraries, and the
> appropriate way of packaging them, is somewhat complex but very neat and
> makes a lot of sense. It's worth reading up and understanding exactly
> how it works and what it achieves. I don't know if there's a 'canonical'
> reference for this, but a bit of Googling produces:
> Which seems like a rather good overview.
>> Who defined this? Is this part of some standards (ex: LSB, etc) ?
>> Is there some written documentation about this ?
> See above. Also
> https://www.ibm.com/developerworks/linux/library/l-shlibs/index.html has
> some good stuff.
> http://netwinder.osuosl.org/pub/netwinder/docs/misc/GCC-HOWTO-html/GCC-HOWTO-6.html has more of the same, and explains the wrinkle of the 'soname' that's actually embedded in the library file quite well.
> This isn't Linux-specific, note. Most *nixes use the same format (ELF)
> and the same conventions with regard to linking and versioning shared
> Adam Williamson
> Fedora QA Community Monkey
> IRC: adamw | Twitter: AdamW_Fedora | identi.ca: adamwfedora
> devel mailing list
> devel at lists.fedoraproject.org
// I've stopped trying to understand sandwiches with a third piece of
bread in the middle...
More information about the devel