最近在捣鼓NodeMCU
,中间各种折腾,下面记录一下编译工具链的过程。
官方推荐的操作过程如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
$ sudo mkdir /opt/Espressif $ sudo chown `whoami` /opt/Espressif/ $ cd /opt/Espressif $ sudo apt-get install git autoconf build-essential gperf bison flex texinfo libtool libncurses5-dev wget gawk libc6-dev-amd64 python-serial libexpat-dev $ sudo apt install help2man $ sudo apt-get install libtool-bin $ git clone --recursive https://github.com/pfalcon/esp-open-sdk.git $ cd esp-open-sdk $ make STANDALONE=y $ export PATH=$PWD/xtensa-lx106-elf/bin:$PATH |
上面操作中最慢的依旧是下载依赖的工具链的源代码部分,可以从本站下载一份已经下载完全部依赖项目的编译环境。点击此处下载
本站下载的文件,直接执行make
命令即可,不要执行make clean
,make clean
会删除ESP8266_NONOS_SDK
文件夹,导致编译不通过。这种情况,可以还原Makefile
,再次去服务器上拉取文件即可。
编译完成后,注意以下几个路径
esp-open-sdk/xtensa-lx106-elf/xtensa-lx106-elf/sysroot/usr/include/
为头文件的所在目录
esp-open-sdk/xtensa-lx106-elf/bin
为工具链所在目录
esp-open-sdk/xtensa-lx106-elf/xtensa-lx106-elf/sysroot/lib
为链接库目录
上面的几个路径在编译源代码的时候会用到。
以下的操作过程可以通过,但是已经过时,在实际编译新项目的时候,可能会出现异常,已经不推荐了。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
$ sudo apt-get install git autoconf build-essential gperf bison flex texinfo libtool libncurses5-dev wget gawk libc6-dev-amd64 python-serial libexpat-dev $ sudo apt-get install libtool-bin $ sudo mkdir /opt/Espressif $ sudo chown `whoami` /opt/Espressif/ $ cd /opt/Espressif $ git clone -b lx106 git://github.com/jcmvbkbc/crosstool-NG.git $ cd crosstool-NG $ ./bootstrap && ./configure --prefix=`pwd` && make && make install $ ./ct-ng xtensa-lx106-elf $ ./ct-ng build $ PATH=$PWD/builds/xtensa-lx106-elf/bin:$PATH |
对于上面的命令执行过程中,往往卡住在ct-ng build
这个位置,观察目录下的build.log
会发现总是卡住在文件下载的位置,大量的链接无法正确下载,都是国情导致的。
如果出现下载问题,一般建议从本站下载一份已经下载好的文件,当然,也可以手工从其他镜像站点逐个手工下载依赖的源代码压缩包。
参考操作如下:
|
$ cd /opt/Espressif/crosstool-NG $ mkdir .build $ cd .build $ wget https://www.mobibrw.com/wp-content/uploads/2018/08/tarballs.zip $ unzip tarballs.zip $ rm -rf tarballs.zip |
然后重新执行ct-ng build
命令即可。
如果上面的代码下载存在问题,可以从本站下载一份拷贝,点击下载crosstool-NG
已经编译好的工具链,可以从本站下载,点击这里下载 xtensa-lx106-elf
参考链接
esp8266/esp8266-wiki/Toolchain