minor revision encoded in SONAME in libpython.so

szager at gmail.com szager at gmail.com
Tue Mar 24 12:23:29 EDT 2009


I'm wondering why the SONAME in libpython.so has a minor revision
encoded in it; for example (on Linux):

$ readelf -d libpython2.6.so | grep SONAME
 0x0000000e (SONAME)                     Library soname:
[libpython2.6.so.1.0]

Because of this, if I compile an app against this library (with '-L/
usr/lib -lpython2.6), the compiled app has a dependency in this
precise minor revision of libpython2.6.so:

$ readelf -d myApp | grep libpython
 0x0000000000000001 (NEEDED)             Shared library:
[libpython2.6.so.1.0]

So, for example, if I upgrade to libpython2.6.so.1.1, my app will not
be able to run.  I am currently having this problem while integrating
a piece of third-party software that uses an embedded python
interpreter.

This is unusual for libraries of this kind.  Typically, the SONAME
will contain only the major revision, on the assumption that all the
minor revisions conform to the same public API, and are nominally
interchangeable.  Am I to assume that minor version iterations have
incompatible API's?

Thanks in advance for any guidance.




More information about the Python-list mailing list