Reputation: 33
I am learning to manage my shared libraries, google reveals plenty of information about the two major and minor version digits but many of the libraries that I am looking at have 3 digits e.g. libsqlite3.so.0.8.6 , what is the third digit?
There is mention of a 'period':
...The soname has the prefix
lib'', the name of the library, the phrase
.so'', followed by a period and a version number that is incremented whenever the interface changes... http://tldp.org/HOWTO/Program-Library-HOWTO/shared-libraries.html
but I can't find explanation of what this period digit is and it's effects?
EDIT:
libsqlite3.so.0.8.6
| | |
_What's this?_| | |
_Major__________| |
_Minor____________|
Upvotes: 0
Views: 730
Reputation: 27573
Here is a thread from another forum (quick Google search) with some conversation regarding the naming:
From the thread:
When there's two numbers there's a major and a minor version. libncursesw.so.5.6 has major version 5 and minor version 6; in theory any minor version of the same major version is compatible without recompiling, so programs that linked to libncursesw.so.5 wouldn't miss a beat if you upgraded to 5.7 for a bugfix. If you had an ancient program demanding version 4, you could safely install a 4.x library alongside the 5.x ones, and nothing but that program would use it.
Basically, the naming convention allows for three levels of compatibility for programs that link against the library. A program can choose to link against the library name itself, a specific major number, or a specific major.minor number. This is really up to an application developer to determine what makes the most sense.
You will note that the generic and major number form typically link to the most recent major.minor form. Libraries may contain additional version numbers, as needed by the library (e.g. /lib/ld-linux.so
). The version number still proceeds from left to right, increasing in specificity.
Upvotes: 2