Here, we will present a list of common errors that may appear when building a project alongside the reason and a solution to them.

Environment variable LIBCLANG_PATH not set

thread 'main' panicked at 'Unable to find libclang: "couldn't find any valid shared libraries matching: ['', 'libclang-*.so', '*', 'libclang-*.so.*'], set the `LIBCLANG_PATH` environment variable to a path where one of these files can be found (invalid: [])"', /home/esp/.cargo/registry/src/

We need libclang for bindgen to generate the Rust bindings to the ESP-IDF C headers. Make sure the environment variable LIBCLANG_PATH is set and pointing to our custom fork of LLVM:

  • Unix:
    export $HOME/.espressif/tools/xtensa-esp32-elf-clang/esp-15.0.0-20221014-x86_64-unknown-linux-gnu/esp-clang/lib
  • Windows:


thread 'main' panicked at 'Unable to find libclang: "the `libclang` shared library at /home/user/.espressif/tools/xtensa-esp32-elf-clang/esp-15.0.0-20221014-x86_64-unknown-linux-gnu/esp-clang/lib/ could not be o
pened: cannot open shared object file: No such file or directory"', /home/user/.cargo/registry/src/

Our current version of LLVM, 15, requires This dependency will probably be removed in our future LLVM releases, but for the moment, please, make sure you have it installed:

  • Ubuntu/Debian: sudo apt-get install libtinfo5
  • Fedora: sudo dnf install ncurses-compat-libs
  • openSUSE: sudo dnf install libncurses5
  • Arch Linux: sudo pacman -S ncurses5-compat-libs

Missing ldproxy

error: linker `ldproxy` not found
  = note: No such file or directory (os error 2)

If you are trying to build a std application ldproxy must be installed.

cargo install ldproxy

For more information, see ldproxy section.

Using wrong Rust toolchain

$ cargo build
error: failed to run `rustc` to learn about target-specific information

Caused by:
  process didn't exit successfully: `rustc - --crate-name ___ --print=file-names --target xtensa-esp32-espidf --crate-type bin --crate-type rlib --crate-type dylib --crate-type cdylib --crate-type staticlib --crate-type proc-macro --print=sysroot --print=cfg` (exit status: 1)
  --- stderr
  error: Error loading target specification: Could not find specification for target "xtensa-esp32-espidf". Run `rustc --print target-list` for a list of built-in targets

If you are encountering the previous error or a similar one, you are probably not using the proper Rust toolchain, remember that for Xtensa targets, you need to use Espressif Rust fork toolchain, there are several ways to do it:

For more information on toolchain overriding, see the Overrides chapter of The rustup book.


Long path names

When using Windows, you may encounter issues building a new project if using long path names. Follow these steps to substitute the path of your project:

subst r:\ <pathToYourProject>
cd r:\

Missing ABI

  Compiling cc v1.0.69
error: linker `link.exe` not found
  = note: The system cannot find the file specified. (os error 2)

note: the msvc targets depend on the msvc linker but `link.exe` was not found

note: please ensure that VS 2013, VS 2015, VS 2017 or VS 2019 was installed with the Visual C++ option

error: could not compile `compiler_builtins` due to previous error
warning: build failed, waiting for other jobs to finish...
error: build failed

The reason for this error is that we are missing the MSVC C++, hence we are not meeting the Compile-time Requirements, please install Visual Studio 2013 (or later) or the Visual C++ Build Tools 2019. For Visual Studio, make sure to check the "C++ tools" and "Windows 10 SDK" options. If using GNU ABI, install MinGW/MSYS2 toolchain.