Symbol versioning provides a way to tightly control the interface of a shared library.
When a symbol is imported from a shared library that has versioned symbols, armlink binds to the most recent (default) version of the symbol. At load or run-time when the platform OS resolves the symbol version, it always resolves to the version selected by armlink, even if there is a more recent version available. This process is automatic.
When a symbol is exported from an executable or a shared library,
it can be given a version. armlink supports implicit
symbol versioning where the version is derived from the shared object name
--soname), or explicit symbol versioning
where a script is used to precisely define the versions.