A shared library should only export
(i.e., make visible outside the library)
those symbols (functions, variables)
that form its specified ABI
(Application Binary Interface).
Exposing other symbols "accidentally" can lead to various problems:
Conflict: shared library maintainer wants to change the unspecified interfaces, but application developer expects to be able to continue using them.
(C) 2006, Michael Kerrisk