What is symbol versioning good for? Do I need it?
{AJ} Symbol versioning solves problems that are related to interface changes. One version of an interface might have been introduced in a previous version of the GNU C library but the interface or the semantics of the function has been changed in the meantime. For binary compatibility with the old library, a newer library needs to still have the old interface for old programs. On the other hand, new programs should use the new interface. Symbol versioning is the solution for this problem. The GNU libc version 2.1 uses symbol versioning by default if the installed binutils supports it. We don’t advise building without symbol versioning, since you lose binary compatibility – forever! The binary compatibility you lose is not only against the previous version of the GNU libc (version 2.0) but also against all future versions.