文章目录
- 一 前言
- 二 CMake 和 Make 编译差异?
- 二 事先安装好官方 ESP-IDF 工具安装器
- 三 开始设置
- 第一步:获取 ESP8266 Master 分支代码;
- 3.1.1 【方式一】用博主提供的方式拉取最新代码
- 3.1.2 【方式二】用官方方式拉取最新代码
- 第二步:设置 IDF_PATH 变量和编译工具链路径;
- 第三步:找到关键三要素
- 第四步:开始编译
- 四 集成在 VS Code编辑器终端
- 五 其他问题
一 前言
也许你会问:您都写了这么多ESP8266文章,为何还停留在这个环境搭建博文,看你的文章,都是很浅薄的,没有内在干货!
咳咳,问到这个点,我也在反思自己,物联网的应用也搞得七七八八了,那么我应该还要学什么?我一直认为:技术需要沉淀的,厚积而爆发; 我这半年在研究 SpringBoot 以及蓝牙mesh,还有最近的要开源 安信可腾讯物联方案&&微信小程序配网/控制;
一直想以最简单的方式,给大家快速入门物联网世界,所以,我在公司开源了安信可腾讯物联方案之后,会全力做些入门视频奉献给大家!希望大家多多关注我的博客!
二 CMake 和 Make 编译差异?
CMake
是一种跨平台编译工具,比make更为高级,使用起来要方便得多。CMake主要是编写CMakeLists.txt文件,然后用cmake命令将CMakeLists.txt文件转化为make所需要的makefile文件,最后用make命令编译源码生成可执行程序或共享库(so(shared object))。
以下参考此篇文章,仅供参考;
- 1.
gcc
是GNU Compiler Collection
(就是GNU
编译器套件),也可以简单认为是编译器,它可以编译很多种编程语言(括C、C++、Objective-C、Fortran、Java
等等)。 - 2.当你的程序只有一个源文件时,直接就可以用
gcc
命令编译它。 - 3.但是当你的程序包含很多个源文件时,用
gcc
命令逐个去编译时,你就很容易混乱而且工作量大 - 4.所以出现了
make
工具make
工具可以看成是一个智能的批处理工具,它本身并没有编译和链接的功能,而是用类似于批处理的方式—通过调用makefile
文件中用户指定的命令来进行编译和链接的。 - 5.
makefile
是什么?简单的说就像一首歌的乐谱,make
工具就像指挥家,指挥家根据乐谱指挥整个乐团怎么样演奏,make
工具就根据makefile
中的命令进行编译和链接的。 - 6.
makefile
命令中就包含了调用gcc
(也可以是别的编译器)去编译某个源文件的命令。 - 7.
makefile
在一些简单的工程完全可以人工手下,但是当工程非常大的时候,手写makefile
也是非常麻烦的,如果换了个平台makefile又要重新修改。 - 8.这时候就出现了Cmake这个工具,cmake就可以更加简单的生成makefile文件给上面那个make用。当然cmake还有其他功能,就是可以跨平台生成对应平台能用的makefile,你不用再自己去修改了。
- 9.可是
cmake
根据什么生成makefile
呢?它又要根据一个叫CMakeLists.txt
文件(学名:组态档)去生成makefile
。
看了这么多文字,是否觉得: CMake的出现,会加快 Make 的编译速度? 个人理解,跨平台的CMake
后生成的 Makefile
文件更容易被 Make
编译,从而提高编译速度!如果您觉得另有原因,欢迎留言点评!
二 事先安装好官方 ESP-IDF 工具安装器
ESP8266 从传统的 Make 编译到去年支持 CMake 编译,无疑是提高一个档次的编译速度,前面文章我以及给大家介绍了如何在ESP32的编译,这次给大家带来如何在 ESP8266上实现;
首先要安装官方ESP-IDF工具安装器哦,可以参考我这篇文章:
《分享下如何在window下使用CMake编译ESP32,编译速度提高传统 make 编译一个档次》
或者您时间允许,可以观看下面的官方视频!
【IOT College】ESP-IDF 环境搭建 Windows
三 开始设置
因为目前2020/7/29
的 ESP8266 Master
分支没有 export.bat
文件,所以处理起来没像 ESP32 那么方便,也体现了乐鑫的主打方向是在 ESP32往后的产品了!
第一步:获取 ESP8266 Master 分支代码;
3.1.1 【方式一】用博主提供的方式拉取最新代码
众所周知,乐鑫的开放源码都放在GitHub,而GitHub又被微软收购了,这一年的访问下载速度慢得乌龟一样,哈哈!所以,我克隆一份放在了国内的码云网站,这样就保证我们拉取代码非常快!
PS:这份同步乐鑫源仓库的工作,我会一直保持下去!
sudo git clone --recursive https://gitee.com/xuhongv/ESP8266_RTOS_SDK.git
3.1.2 【方式二】用官方方式拉取最新代码
带子模块递归方式拉取GitHub,慢慢等吧!
sudo git clone --recursive https://github.com/espressif/ESP8266_RTOS_SDK.git
第二步:设置 IDF_PATH 变量和编译工具链路径;
- 设置 IDF_PATH 环境变量,取值为您克隆 ESP8266 SDK 的地址;
- 还需要手动下载编译工具链路径,下载地址点我,注意务必用 ZipRar 管理员身份解压,否则会造成文件丢失!之后把解压后的目录的
bin
目录放在环境变量PATH
里面!
第三步:找到关键三要素
第1要素:找到前面的 ESP-IDF 工具安装器的安装路径下面的idf_cmd_init.bat
文件,一般在C盘:
C:\Users\87018\.espressif\idf_cmd_init.bat
第2要素:然后,再找到我们安装 Python3.8 的路径,比如我的:
C:\Users\87018\AppData\Local\Programs\Python\Python38
第3要素:最后,找到我们安装 git 的路径,比如我的:
C:\SoftWare\Git\cmd
第四步:开始编译
在集成好前面的三要素之后,在刚刚拿到的 ESP8266 SDK 路径下面打开 CMD窗口,之后依次输入:${第1要素} ${第2要素} ${第3要素},比如我的:
C:\Users\87018\.espressif\idf_cmd_init.bat C:\Users\87018\AppData\Local\Programs\Python\Python38 C:\SoftWare\Git\cmd
当出现以下输出,说明成功啦:
Done! You can now compile ESP-IDF projects.
Go to the project directory and run:
idf.py build
如下动图操作:
最后的编译下载与ESP32的一样,常见的指令:
-
idf.py menuconfig
:进去面板设置。 -
idf.py all
:编译全部。 -
idf.py app
:编译应用程序。 -
idf.py clean
:清空工程的编译物。 -
idf.py flash
:烧录固件。 -
idf.py erase_flash
:清空设备里面的固件。 -
idf.py monitor
:串口监听设备打印信息。
四 集成在 VS Code编辑器终端
单单仅有环境成功是不行的,我们还需要集成进去编辑器里面去,这里以 VS Code为例:
点击Alt+Shift+P,在弹框中输入setting,选择打开设置,添加以下内容:
{
"terminal.integrated.shell.windows": "C:\\Windows\\system32\\cmd.exe",
"terminal.integrated.shellArgs.windows": [
"/k",
"C:\\Users\\87018\\.espressif\\idf_cmd_init.bat",
"C:\\Users\\87018\\AppData\\Local\\Programs\\Python\\Python38",
"C:\\SoftWare\\Git\\cmd"
],
}
之后,打开终端 Alt+Shift+`,如下所示则说明成功集成到 VS Code编辑器的终端去了!
五 其他问题
- Q1: 提示错误
Python requirements are not satisfied
:
Checking if Python packages are up to date...
The following Python requirements are not satisfied:
click>=5.0
pyserial>=3.0
future>=0.15.2
cryptography>=2.1.4
pyparsing>=2.0.3,<2.4.0
pyelftools>=0.22
Please refer to the Get Started section of the ESP-IDF Programming Guide for setting up the required packages.
Alternatively, you can run "C:\\Users\\87018\\AppData\\Local\\Programs\\Python\\Python38\\python.exe -m pip install --user -r E:\\Espressif\\ESP8266_RTOS_SDK\\requirements.txt" for resolving the issue.
解决方法 :按照其提示,运行这个指令即可: C:\\Users\\87018\\AppData\\Local\\Programs\\Python\\Python38\\python.exe -m pip install --user -r E:\\Espressif\\ESP8266_RTOS_SDK\\requirements.txt