Getting Started¶
abicheck compares two versions of a C/C++ shared library and tells you whether existing binaries will break. It supports ELF (Linux), PE/COFF (Windows), and Mach-O (macOS) binaries.
On all platforms it provides binary metadata analysis (exports, imports, dependencies) and header AST analysis (via castxml). Debug info cross-check uses DWARF (Linux, macOS) and PDB (Windows).
In CI already? Skip straight to the GitHub Action — it installs everything and runs the check in a few lines of YAML.
What question are you asking?¶
abicheck ships several commands; pick the one that matches your question. If
you're unsure, start with abicheck compare — it's the default workflow.
| Your question | Command | See |
|---|---|---|
| Did my library break? — does upgrading it break existing consumers? | abicheck compare |
Run your first check |
| Does my application still work with the new library version? | abicheck compare --used-by |
Application Compatibility |
| Did my whole package / release break? | abicheck compare |
Multi-Binary Releases |
| Gate a pull request with the deepest evidence available (headers + build + sources)? | abicheck scan |
Source-Scan Depth |
| Will this binary load and resolve correctly in this sysroot — and does its dependency tree have unresolved symbols? | abicheck deps tree (--sysroot /rootfs for a specific root) |
CLI Usage |
| Did anything in the dependency stack change between two sysroots / images? | abicheck deps compare --old-root … --new-root … |
CLI Usage |
I'm migrating from abi-compliance-checker and want the same flags. |
abicheck compat |
Migrating from ABICC |
| Save a reusable ABI baseline for CI. | abicheck dump |
Creating and Comparing a Baseline |
For the full decision matrix — every artifact layout, accuracy tier, and CI policy — see Choose Your Workflow.
Your first five minutes¶
- ➡️ Install abicheck — conda-forge (recommended, bundles
castxml) or a lightweightpip install. - ➡️ Run your first check — compare two shared libraries from the repo's example catalog, then your own library.
- ➡️ Understand your first report — output formats and what the exit code means for CI.
- ➡️ Choose Your Workflow — once the basic flow works, map your actual artifacts/CI policy to the exact command.
Two other common day-one workflows, covered on their own canonical pages rather than here: saving a reusable baseline for CI (Creating and Comparing a Baseline) and checking whether an application (not just the library) still works after an update (Application Compatibility).
Next steps¶
Jump straight to your persona:
- Library maintainer → Verdicts, Policy Profiles
- App developer → Application Compatibility
- SDK / package maintainer → Multi-Binary Releases, Baseline Management
- CI owner → GitHub Action, Severity Configuration, Output Formats
- Plugin author → Plugin Systems
- Distro / package maintainer → Multi-Binary Releases
- Migrating from ABICC / libabigail → from ABICC, from libabigail
Background reading:
- ABI/API Handling & Recommendations — real-world ABI/API break scenarios and how to prevent them
- Limitations — what abicheck does not catch