What is abicheck?
abicheck is a utility for checking an application binary's use of library
interfaces against the Application Binary Interface (ABI) defined for
Use of non-ABI interfaces puts the application at risk from binary
incompatibility with later versions of the libraries;
abicheck spots such potential problems.
abicheck was inspired by Sun's work on defining the Solaris ABI,
and its technology for checking whether application binaries conform
to that ABI
Sun ABI website
for more details).
abicheck is the nucleus for such an ABI effort in the Open Source community.
It is currently in the prototype/planning stage; initial work has been
done by members of Sun Microsystems' Solaris ABI Project.
The abicheck source is released under the LGPL.
What is an ABI and how does it differ from an API?
An Application Binary Interface (ABI) is the set of supported
runtime interfaces provided by
a software component or set of components for applications to use,
whereas an API is the set of build-time interfaces.
It is thus the ABI that actually determines whether or not an
application and system are binary compatible.
The most obvious and important ABI is that provided by a shared object
(dynamically linked library) since the actual linking is determined at
runtime; stability can only be achieved when the library and
the applications which use its interfaces adhere to a common stable ABI.
As a useful first approximation, an ABI definition should indicate
which interfaces are "public", i.e., documented and stable, and those
which are "private", i.e., not guaranteed to remain compatible in
There currently are draft ABI's for
Public comment on them is welcomed.
abicheck man page
Library Interface Definition and Versioning (INTRO)
Library Interface Versioning in Solaris and Linux (also in