.so's in devel packages...

Nelson Marques nmo.marques at gmail.com
Mon Jun 18 19:59:07 UTC 2012


Adam,

Thanks, this helps a lot understanding a bit more around shared libraries;

NM

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:
>
> http://static.usenix.org/publications/library/proceedings/als00/2000papers/papers/full_papers/browndavid/browndavid_html/
>
> 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
> libraries.
> --
> Adam Williamson
> Fedora QA Community Monkey
> IRC: adamw | Twitter: AdamW_Fedora | identi.ca: adamwfedora
> http://www.happyassassin.net
>
> --
> devel mailing list
> devel at lists.fedoraproject.org
> https://admin.fedoraproject.org/mailman/listinfo/devel



-- 
Nelson Marques
// I've stopped trying to understand sandwiches with a third piece of
bread in the middle...


More information about the devel mailing list