Setup Linux Toolchain from Scratch¶
The following instructions are alternative to downloading binary toolchain from Espressif website. To quickly setup the binary toolchain, instead of compiling it yourself, backup and proceed to section Standard Setup of Toolchain for Linux.
Note
The reason you might need to build your own toolchain is to solve the Y2K38 problem (time_t expand to 64 bits instead of 32 bits).
Install Prerequisites¶
To compile with ESP-IDF you need to get the following packages:
CentOS 7:
sudo yum install git wget ncurses-devel flex bison gperf python pyserial python-pyelftools cmake ninja-build ccache
Ubuntu and Debian:
sudo apt-get install git wget libncurses-dev flex bison gperf python python-pip python-setuptools python-serial python-click python-cryptography python-future python-pyparsing python-pyelftools cmake ninja-build ccache libffi-dev libssl-dev
Arch:
sudo pacman -S --needed gcc git make ncurses flex bison gperf python2-pyserial python2-click python2-cryptography python2-future python2-pyparsing python2-pyelftools cmake ninja ccache
Note
CMake version 3.5 or newer is required for use with ESP-IDF. Older Linux distributions may require updating, enabling of a “backports” repository, or installing of a “cmake3” package rather than “cmake”.
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 make
Ubuntu pre-16.04:
sudo apt-get install gawk gperf grep gettext libncurses-dev python python-dev automake bison flex texinfo help2man libtool make
Ubuntu 16.04 or newer:
sudo apt-get install gawk gperf grep gettext python python-dev automake bison flex texinfo help2man libtool libtool-bin make
Debian 9:
sudo apt-get install gawk gperf grep gettext libncurses-dev python python-dev automake bison flex texinfo help2man libtool libtool-bin make
Arch:
TODO
Create the working directory and go into it:
mkdir -p ~/esp
cd ~/esp
Download crosstool-NG
and build it:
git clone https://github.com/espressif/crosstool-NG.git
cd crosstool-NG
git checkout esp-2019r2
git submodule update --init
./bootstrap && ./configure --enable-local && make
Note
To create a toolchain with support for 64-bit time_t, you need to remove the --enable-newlib-long-time_t
option from the crosstool-NG/samples/xtensa-esp32-elf/crosstool.config
file in 33 and 43 lines.
Build the toolchain:
./ct-ng xtensa-esp32-elf
./ct-ng build
chmod -R u+w builds/xtensa-esp32-elf
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 Step 2. Get ESP-IDF.