On 11/30/2012 07:13 AM, Anne Wilson wrote:

Before doing all that, can you explain the significance of the
suffixes here?

ls /usr/lib/ | grep powerdevil
libpowerdevilconfigcommonprivate.so.4@
libpowerdevilconfigcommonprivate.so.4.10.0*
libpowerdevilcore.so.0@
libpowerdevilcore.so.0.1.0*
libpowerdevilui.so.4@
libpowerdevilui.so.4.10.0*

Library naming conventions use several, actual version, e. g. 4.10.0, major version, e. g. 4, and a generic name, e. g. libxxx.so. The last two are usually symlinked to the first.

The major version usually signals an ABI difference or some other major difference, e. g. new function, from the previous version. The actual version changes whenever any change is made. Developers use the major version if their code is dependent on that major version, but just use the generic name if any version will do.

In this way, the majority of packages using the library just ask for libxxx.so, and don't have to be rebuilt or have their makefiles or spec modified when the library changes. A few packages, which are dependent on a specific version, ask for libxxx.so.N (or higher), and these have to be changed when the major version they require is released. A very very few packages are dependent on the actual version, and these may have to change more often.

Reply via email to