I recently read a lot about shared libraries on Linux, and here is what I learnt:
- A shared library should embed a
sonameincluding its major version number. Something like:libfoo.so.1 - Its real filename should also include a minor version number. Something like:
libfoo.so.1.0 - When the library file is copied to, say
/usr/local/lib, ifldconfigis run, it will read thesonameand create a symlink namedlibfoo.so.1pointing tolibfoo.so.1.0. - If one wants to use this library for its developments it should first create a symlink without any version number to the real file, say
libfoo.sopointing tolibfoo.so.1.0. This is usually done by the development package (when the library is packaged).
Is this correct ?
Suggested reading:
Ulrich Drepper's How to write shared libraries: http://www.akkadia.org/drepper/dsohowto.pdf
Ulrich Drepper's Good Practices in library design, implementation, and maintenance: http://www.akkadia.org/drepper/goodpractice.pdf
dsohowto is much more detailed. goodpractice is a quick read.
来源:https://stackoverflow.com/questions/4757121/what-are-good-practices-regarding-shared-libraries-on-linux