ESP8266 建立Linux开发环境
Toolchain
官方提供的开发环境是利用虚拟环境再配合档案分享的方式让程式码在虚拟机器与实体机器间分享并且顺利编译程式码,此篇要利用已经预先编译好各平台的开发工具集直接放在自已的平台上执行,不需要在自已的平台上面重新编译好开发工具集才能使用。
安装相依套件
开发工具使用环境中,必需要具备一些套件或是函数库,像:make、git、autoconf…等,以下介绍以2个Linux分支示范安装
Ubuntu/Debian
更新套件列表
安装套件之前先更新套件列表,以免安装到旧版本的套件:
sudo apt update
执行完成后会看到返回讯息,如果需要套件更新列表就照讯息中的执行apt list --upgradable
,在这不需要执行:
: : : Fetched 9954 kB in 8s (1130 kB/s) Reading package lists... Done Building dependency tree Reading state information... Done 22 packages can be upgraded. Run 'apt list --upgradable' to see them.
检查系统架构
某些套件安装时需要依照你安装系统架构进行安装,架构分为32bit(x86)、64bit(x64),执行uname
确定你的版本:
uname -m
如果你是64bit版本会看到结果:
x86_64
32bit比较特别,可能会有两种:
i686
或
i386
安装套件
- 32bit
apt install git autoconf build-essential gperf bison flex texinfo libtool libncurses5-dev wget gawk libc6-dev-i386 python-serial libexpat-dev
- 64bit
apt install git autoconf build-essential gperf bison flex texinfo libtool libncurses5-dev wget gawk libc6-dev-amd64 python-serial libexpat-dev
Arch
Arch Linux具有套件群组安装套件,套件群组意指具备某些类型操作需要,像base-devel套件群组针对开发者安装开发时需要的基本套件,像gcc、autoconf已经包含,所以另外再安装二个套件有关pySerial、gpref:
pacman -S base-devel python-pyserial gperf
开发工具
ESP8266 Community Forum提供开发工具建置教学放在Github上的esp8266-wiki上,不过此次是利用该团队建立的ESP8266 Core for Arduino中有提供package_esp8266com_index.json给Arduino IDE当设定档,丹尼从里面解析出Linux平台开发工具(Toolchain)的下载位置,如此一来,不用照教学透过crosstool-NG重新编译ESP8266的开发工具。
64bit
http://arduino.esp8266.com/linux64-xtensa-lx106-elf-gb404fb9.tar.gz
32bit
http://arduino.esp8266.com/linux32-xtensa-lx106-elf.tar.gz
下载完后自行解开至自已的环境并记住路径。
标头档与函式库
开发工具并未包含ESP8266使用的函式库及标头档必需要先下载,首先先假设开发工具解压至xtensa-lx106-elf
目录。
进入开发工具所在目录
cd xtensa-lx106-elf
查看目录结构,执行列表
ls -l
执行结果
total 1660 drwxrwxr-x 2 danny danny 4096 8月 4 14:47 bin -rw-rw-r-- 1 danny danny 691490 5月 13 2015 build.log.bz2 drwxrwxr-x 7 danny danny 4096 8月 4 14:47 include -rw-rw-r-- 1 danny danny 979111 8月 2 13:50 include.tgz drwxrwxr-x 4 danny danny 4096 8月 4 14:47 lib drwxrwxr-x 3 danny danny 4096 8月 4 14:47 libexec drwxrwxr-x 4 danny danny 4096 8月 4 14:47 share drwxrwxr-x 9 danny danny 4096 8月 4 14:47 xtensa-lx106-elf
进入第二层目录xtensa-lx106-elf
cd xtensa-lx106-elf
下载缺少的函式库至lib
目录
wget -O lib/libc.a https://github.com/esp8266/esp8266-wiki/raw/master/libs/libc.a wget -O lib/libhal.a https://github.com/esp8266/esp8266-wiki/raw/master/libs/libhal.a
标头档下载并解压
wget -O include.tgz https://github.com/esp8266/esp8266-wiki/raw/master/include.tgz tar zxvf include.tgz
解压后会将标头档全部解压至include
目录。
路径设定
开发环境建置完成后,接下来将开发工具移动至你存放的路径,并进入xtensa-lx106-elf/bin
目录,并且执行
pwd
执行结果会回报路径
/opt/xtensa-lx106-elf/bin
丹尼将开发工具移至/opt
目录,一般来说只要自行安装的都会建议移至此目录,此时将路径加到PATH
变数,加到PATH
环境变数提供二种
~/.bashrc
使用编辑器开启~/.bashrc
档案
nano ~/.bashrc
并加入PATH
环境变数
PATH="/opt/xtensa-lx106-elf/bin:$PATH"
profile
进入/etc/profile.d
,建立一个新档案名为xtensa-lx106-elf-env.sh
sudo nano /etc/profile.d/xtensa-lx106-elf-env.sh
并加入PATH
环境变数后存档
PATH="/opt/xtensa-lx106-elf/bin:$PATH"
以上完成后,路径生效时就能执行xtensa-lx106-elf-gcc -v
测试一下路径有没有正确,正确会看到执行结果如:
Using built-in specs. COLLECT_GCC=xtensa-lx106-elf-gcc COLLECT_LTO_WRAPPER=/opt/xtensa-lx106-elf/bin/../libexec/gcc/xtensa-lx106-elf/4.8.2/lto-wrapper Target: xtensa-lx106-elf Configured with: /opt/Espressif/crosstool-NG/.build/src/gcc-4.8.2/configure --build=x86_64-build_unknown-linux-gnu --host=x86_64-build_unknown-linux-gnu --target=xtensa-lx106-elf --prefix=/opt/Espressif/crosstool-NG/builds/xtensa-lx106-elf --with-local-prefix=/opt/Espressif/crosstool-NG/builds/xtensa-lx106-elf/xtensa-lx106-elf/sysroot --disable-libmudflap --with-sysroot=/opt/Espressif/crosstool-NG/builds/xtensa-lx106-elf/xtensa-lx106-elf/sysroot --with-newlib --enable-threads=no --disable-shared --with-pkgversion='crosstool-NG 1.20.0' --disable-__cxa_atexit --with-gmp=/opt/Espressif/crosstool-NG/.build/xtensa-lx106-elf/buildtools --with-mpfr=/opt/Espressif/crosstool-NG/.build/xtensa-lx106-elf/buildtools --with-mpc=/opt/Espressif/crosstool-NG/.build/xtensa-lx106-elf/buildtools --with-isl=/opt/Espressif/crosstool-NG/.build/xtensa-lx106-elf/buildtools --with-cloog=/opt/Espressif/crosstool-NG/.build/xtensa-lx106-elf/buildtools --with-libelf=/opt/Espressif/crosstool-NG/.build/xtensa-lx106-elf/buildtools --enable-lto --enable-target-optspace --disable-libgomp --disable-libmudflap --disable-nls --disable-multilib --enable-languages=c Thread model: single gcc version 4.8.2 (crosstool-NG 1.20.0)
参考资料
关键字:
快速建立ESP8266 Linux开发环境