I am developing a cross platform shared library right now, and I'm a bit confused about the correct way this works on *nix. My plan for versions is pretty standard, majors break interfaces, minors add to interfaces but remain compatible with older versions, and patch numbers are bug fixes / improvements that don't touch the interfaces. This translates to minors must increment the SO Version.
So, the filename for the library is
libNAME.so.X.Y.Z for library version
X.Y.Z, and the install name is
libNAME.so.X.Y. My issue here is that when I update my minor, I would like existing linked executables to use the new library (since they are backwards compatible down to X.0.0), but the executables are linked against the old minor
libNAME.so.X.Y. So, does that mean I need to maintain a list of symlinks for all minor versions below the current and update them all to point to the new library everytime I upgrade my shared lib?