SourceForge Logo

What is abicheck
What is an ABI
Contact Info
Related Links
Project Page
Mailing Lists
CVS web interface
Source code

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 those libraries. 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 (see the 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 future releases.

There currently are draft ABI's for glibc and GNOME. Public comment on them is welcomed.


abicheck man page
abicheck README
Library Interface Definition and Versioning (INTRO)
Library Interface Versioning in Solaris and Linux (also in Postcript and PDF).

Contact Info

Last Updated 2002-01-28.