[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Questions about library names



>  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



Reply to: