> Yes, but now I have another question. The library itself has a > different version numbering.
That's ok. Version number and SO name are not the same and need not have any correlation. Many different versions can have the same soname and that's ok. > In this way, current version is 0.2.1, but > the library gets compiled as libgpgme.so.0.3.0 as I said before. My understanding is that the three numbers following a shared lib typically mean the following (Quoting a message from Roger Leigh): CURRENT The most recent interface number that this library implements. REVISION The implementation number of the CURRENT interface. AGE The difference between the newest and oldest interfaces that this library implements. In other words, the library implements all the interface numbers in the range from number `CURRENT - AGE' to `CURRENT'. If two libraries have identical CURRENT and AGE numbers, then the dynamic linker chooses the library with the greater REVISION number. > The problem with this is that some day, the library can reach, let's > say, version 0.5, and upstream author must decide to start calling the > library again from 0.0.0, so the library's name for version 0.5 will be > libgpgme.so.0.0.0 No, he must not do that. The "current" number must change any time there is binary incompatibility. The "revision" number must be updated every time there is a new release. These numbers need not have any relation to the version numbers used to describe the source. Eric