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?