Note

You are reading the documentation for an ESP-IDF release version that is end of life. The latest stable version is v5.4

Setup Linux Toolchain from Scratch (Legacy GNU Make)

[中文]

Note

Since ESP-IDF V4.0, the default build system is based on CMake. This documentation is for the legacy build system based on GNU Make. Support for this build system may be removed in future major releases.

Note

Standard process for installing the toolchain is described here. See Customized Setup of Toolchain section for some of the reasons why installing the toolchain from scratch may be necessary.

Install Prerequisites

To compile with ESP-IDF you need to get the following packages:

  • Ubuntu and Debian:

    sudo apt-get install gcc git wget make libncurses-dev flex bison gperf python python-pip python-setuptools python-serial python-cryptography python-future python-pyparsing python-pyelftools libffi-dev libssl-dev
    
    Copy to clipboard
  • Arch:

    sudo pacman -S --needed gcc git make ncurses flex bison gperf python-pyserial python-cryptography python-future python-pyparsing python-pyelftools
    
    Copy to clipboard

Note

Some older (pre-2014) Linux distributions may use pyserial version 2.x which is not supported by ESP-IDF. In this case please install a supported version via pip as it is described in section Step 4. Install the Required Python Packages.

Compile the Toolchain from Source

  • Install dependencies:

    • CentOS 7:

      sudo yum install gawk gperf grep gettext ncurses-devel python python-devel automake bison flex texinfo help2man libtool
      
      Copy to clipboard
    • Ubuntu pre-16.04:

      sudo apt-get install gawk gperf grep gettext libncurses-dev python python-dev automake bison flex texinfo help2man libtool
      
      Copy to clipboard
    • Ubuntu 16.04 or newer:

      sudo apt-get install gawk gperf grep gettext python python-dev automake bison flex texinfo help2man libtool libtool-bin
      
      Copy to clipboard
    • Debian 9:

      sudo apt-get install gawk gperf grep gettext libncurses-dev python python-dev automake bison flex texinfo help2man libtool libtool-bin
      
      Copy to clipboard
    • Arch:

      TODO
      
      Copy to clipboard

Create the working directory and go into it:

mkdir -p ~/esp
cd ~/esp
Copy to clipboard

Download crosstool-NG and build it:

git clone https://github.com/espressif/crosstool-NG.git
cd crosstool-NG
git checkout esp-2021r2-patch3
git submodule update --init
./bootstrap && ./configure --enable-local && make
Copy to clipboard

Build the toolchain:

./ct-ng xtensa-esp32-elf
./ct-ng build
chmod -R u+w builds/xtensa-esp32-elf
Copy to clipboard

Toolchain will be built in ~/esp/crosstool-NG/builds/xtensa-esp32-elf. Follow instructions for standard setup to add the toolchain to your PATH.

Next Steps

To carry on with development environment setup, proceed to section Step 2. Get ESP-IDF.