The Oracle Solaris link editor and run-time linker use two kinds of library versioning: file versioning and symbol versioning. In file versioning, a library is named with an appended version number, such as libc.so.1. In a few cases, when an incompatible change is made to one or more public interfaces in that library, the version number is incremented. For example, libc.so.2.
Library symbol versioning associates a set of symbols with a symbol version name. The following is an example mapfile for a hypothetical Solaris library, libfoo.so.1.
$mapfile_version 2 SYMBOL_VERSION SUNWpublic { global: symbolA; symbolB; symbolC; }; SYMBOL_VERSION SUNWprivate { global: __fooimpl; local: *; };
This mapfile indicates that symbolA, symbolB, and symbolC are associated with version SUNWpublic. The symbol __fooimpl is associated with SUNWprivate .