Requirements - The bindgen User Guide
Description: `bindgen` automatically generates Rust FFI bindings to C and C++ libraries.

## Keyboard shortcuts

Press `←` or `→` to navigate between chapters

Press `S` or `/` to search in the book

Press `?` to show this help

Press `Esc` to hide this help

# Requirements

This page lists the requirements for running `bindgen` and how to get them.

## Clang

`bindgen` leverages `libclang` to preprocess, parse, and type check C and C++ header files.

It is required to use Clang 9.0 or greater.

### Installing Clang

#### Windows

If you use winget:

    winget install LLVM.LLVM

Alternatively, you can download and install the official pre-built binary from LLVM download page.

You will also need to set `LIBCLANG_PATH` as an environment variable pointing to the `bin` directory of your LLVM install. For example, if you installed LLVM to `D:\programs\LLVM`, then you’d set the value to be `D:\programs\LLVM\bin`.

Alternatively, for Mingw64, you can install clang via

    pacman -S  mingw64/mingw-w64-x86_64-clang

#### macOS

If you use Homebrew:

    $ brew install llvm

If you use MacPorts:

    $ port install clang

#### Debian-based Linuxes

    # apt install libclang-dev

If you want to use the function `bindgen::Builder::dump_preprocessed_input`, then you also need the package `clang`.

#### Arch

    # pacman -S clang

#### Fedora

    # dnf install clang-devel

#### OpenBSD

    # pkg_add llvm

Add `export LIBCLANG_PATH=/usr/local/lib` to your profile.

#### From source

If your package manager doesn’t yet offer Clang 9.0, you’ll need to build from source. For that, follow the instructions here.

Those instructions list optional steps. For `bindgen`:

- Checkout and build clang
- Checkout and build `clang-tools-extra`
- You do not need to checkout or build compiler-rt
- You do not need to checkout or build libcxx