Install abicheck¶
Full installation (recommended) — conda-forge bundles abicheck with castxml
and a compatible compiler toolchain, so header AST analysis (L2) works immediately:
No extra manual dependency installation is required when using the conda-forge package.
Lightweight/core installation — the PyPI package is pure Python with no native scanner dependency:
Requirements¶
- Python 3.10+
castxml+ a C/C++ compiler — required for header AST analysis (all platforms)
All Python dependencies (pyelftools, pefile, macholib) come with the abicheck install.
Important:
pip install abicheckdoes not installcastxml. Any command that takes headers (--header/-H) needscastxmlon yourPATH— without it those commands fail withcastxml not found. Install it with the system/conda packages below (the conda-forge package pulls it in automatically). If you have nocastxml, run binary-only mode by omitting the header flags — abicheck falls back to DWARF/symbols analysis (weaker, but works). Don't runpip install castxmlto fill the gap: that installs the unmaintained legacy PyPI distribution (last released 0.4.5 in 2018), which abicheck's version gate rejects by default for an authoritative L2 scan — use one of the options below (conda-forge, the pinned Superbuild, or your platform's package manager) instead.
Option A: conda-forge (recommended)¶
Conda-forge supplies CastXML together with a compatible compiler toolchain:
Option B: pinned CastXML Superbuild (Ubuntu CI/reproducers)¶
Ubuntu 24.04's apt package currently bundles Clang 17, which cannot parse
some GCC 13 libstdc++ headers. For reproducible Ubuntu runs, use a
CastXML Superbuild release,
pin its tag and SHA256, extract it to a versioned directory, and prepend its
bin directory to PATH. The abicheck GitHub Action does this automatically.
The current CI pin is v2026.01.30 (bundled Clang 21.1.8).
# Windows (PowerShell, as administrator)
choco install castxml
# plus MSVC Build Tools (cl.exe) for PE/PDB debug-info analysis
Option C: conda-forge abicheck environment¶
Already covered by the Full installation command at the top of this
page (conda create -n abicheck -c conda-forge python=3.12 abicheck) —
listed here too since it's also a valid answer to "how do I get castxml"
if you already have abicheck installed a different way and are switching.