150 Chapter 5
Creating and Using Libraries
Version Control with Shared Libraries
• As a general rule, when an exported function is changed such that
calls to the function from previously compiled object files should
not resolve to the new version, the change is incompatible. If the
new version can be used as a wholesale replacement for the old
version, the change is compatible.
• For exported data, any change in either the initial value or the
size represents an incompatible change.
• Any function that is changed to take advantage of an incompatible
change in another module should be considered incompatible.
Maintaining Old Versions of Library Modules
When using shared library versioning, you need to save the old versions
of modules in the library:
• With library-level versioning, when an incompatible change is made
to a module, the entire old version of the library must be retained
along with the new version.
• With intra-library versioning, when an incompatible change is made
to a module, all the old versions of the module should be retained
along with the new version. The new version number should
correspond to the date the change was made. If several modules are
changed incompatibly in a library, it is a good idea to give all modules
the same version date.
Library-Level Versioning
HP-UX 10.0 adds a new library-level versioning scheme that allows you
to maintain multiple versions of shared libraries when you make
incompatible changes to the library. By maintaining multiple versions,
applications linked with the older versions continue to run with the older
libraries, while new applications link and run with the newest version of
the library. Library-level versioning is very similar to the library
versioning on UNIX System V Release 4.
How to Use Library-Level Versioning
To use library-level versioning, follow these steps: