It might be useful to have things like version-script mapfiles as defining interfaces separate from the actual libraries (ELF objects). Then for shared linking the build system (make, whatever) could notice that though an object changed, its interfaces haven't, and then not re-link dependents.