Library Builder


Espressif provides a tool to simplify building your own compiled libraries for use in Arduino IDE (or your favorite IDE).

This tool can be used to change the project or a specific configuration according to your needs.


To install the Library Builder into your environment, please, follow the instructions below.

  • Clone the ESP32 Arduino lib builder:

git clone
  • Go to the esp32-arduino-lib-builder folder:

cd esp32-arduino-lib-builder
  • Build:


If everything works, you may see the following message: Successfully created esp32 image.


To build the library you will need to install some dependencies. Maybe you already have installed it, but it is a good idea to check before building.

  • Install all dependencies (Ubuntu):

sudo apt-get install git wget curl libssl-dev libncurses-dev flex bison gperf cmake ninja-build ccache jq
  • Install Python and upgrade pip:

sudo apt-get install python3
sudo pip install --upgrade pip
  • Install all required packages:

pip install --user setuptools pyserial click cryptography future pyparsing pyelftools


If you have all the dependencies met, it is time to build the libraries.

To build using the default configuration:


Custom Build

There are some options to help you create custom libraries. You can use the following options:

Usage [-s] [-A arduino_branch] [-I idf_branch] [-i idf_commit] [-c path] [-t <target>] [-b <build|menuconfig|idf_libs|copy_bootloader|mem_variant>] [config ...]

Skip Install/Update

Skip installing/updating of ESP-IDF and all components

./ -s

This option can be used if you already have the ESP-IDF and all components already in your environment.

Set Arduino-ESP32 Branch

Set which branch of arduino-esp32 to be used for compilation

./ -A <arduino_branch>

Set ESP-IDF Branch

Set which branch of ESP-IDF is to be used for compilation

./ -I <idf_branch>

Set the ESP-IDF Commit

Set which commit of ESP-IDF to be used for compilation

./ -i <idf_commit>


Deploy the build to github arduino-esp32

./ -d

Set the Arduino-ESP32 Destination Folder

Set the arduino-esp32 folder to copy the result to. ex. ‘$HOME/Arduino/hardware/espressif/esp32’

./ -c <path>

This function is used to copy the compiled libraries to the Arduino folder.

Set the Target

Set the build target(chip). ex. ‘esp32s3’

./ -t <target>

This build command will build for the ESP32-S3 target. You can specify other targets.

  • esp32

  • esp32s2

  • esp32c3

  • esp32s3

Set Build Type

Set the build type. ex. ‘build’ to build the project and prepare for uploading to a board.


This command depends on the -t argument.

./ -t esp32 -b <build|menuconfig|idf_libs|copy_bootloader|mem_variant>

Additional Configuration

Specify additional configs to be applied. ex. ‘qio 80m’ to compile for QIO Flash@80MHz. Requires -b


This command requires the -b to work properly.

./ -t esp32 -b idf_libs qio 80m