ESP32教程之三:搭建Linux开发环境(使用docker彻底解决所有问题)

一、摘要

其实不论在Linux还是Windows上搭建ESP32开发环境,都有依赖问题,导致环境搭建浪费大量时间,甚至最终还是失败,这是个痛点,让我们很烦躁,我们一直致力于ESP32开发的研究,本篇文章先彻底解决Linux开发环境搭建的所有问题(使用docker技术),之后会彻底解决Windows开发环境问题。

二、什么是docker?

docker是一种虚拟化技术,表面上看与虚拟机一样,是一个虚拟的系统,事实上他远远比一个操作系统消耗的资源少,因为docker只是一个Linux系统的一个服务进程。

三、为什么能解决所有Linux开发环境的问题?

docker是一种虚拟机技术,所以只要做一次好的ESP32的Linux环境,然后把这个环境做成一个docker镜像,那么不论你是什么样的Linux系统,只要你安装一个docker软件,然后使用做好的这个镜像,开启docker服务,那么你就有了一个完美的开发环境。

四、安装docker。

以ubuntu为例,安装docker:

step 1: 安装必要的一些系统工具
sudo apt-get update
sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common
step 2: 安装GPG证书
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
Step 3: 写入软件源信息
sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
Step 4: 更新并安装 Docker-CE
sudo apt-get -y update
sudo apt-get -y install docker-ce

其他的Linux系统自行百度搜索即可快速安装。
注:如果安装缓慢,可以修改安装源,也可以百度。

五、获取esp-idf环境镜像。

我们提供了一个制作好的esp32-idf的docker镜像,名字为:idf_v4x_full_v3.tar。
百度网盘地址:

链接:https://pan.baidu.com/s/1u-5FiTGH51SuhrL0eOs_4g 
提取码:z8e9 

六、创建容器,使用docker进行开发。

注:代码包加速拉取参考文章:怎么加速拉取github代码包(以ESP-IDF为例)
(1)加载镜像,创建容器。
加载镜像命令:sudo docker load -i idf_v4x_full_v3.tar
在这里插入图片描述
查看镜像:sudo docker image ls
在这里插入图片描述
使用镜像创建容器:sudo docker run -it -d d2098b4ed96c,其中d2098b4ed96c就是刚才加载的docker镜像的ID。
在这里插入图片描述
查看容器:sudo docker ps
在这里插入图片描述

注:容器需要使用到网络端口号,所以docker命令的运行需要超级权限,如果感觉麻烦可以使用Linux别名命令alias sdocker="sudo docker",之后直接使用sdocker即可。
在这里插入图片描述

(2)使用容器环境进行esp-idf开发。
(2.1)直接使用内部的esp-idf代码包。
在容器内部,我们已经提供了esp32-idf开发的代码包(已为v4.3版本),在目录下面,可以使用git pull进行与github进行同步。
使用命令sudo docker exec -it dccbce0f4778 /bin/bash,其中是刚才创建容器的ID号。
在这里插入图片描述
出现如下终端,说明成功进入容器,
在这里插入图片描述
到一个esp32-idf的一个例程下面输入 idf.py menuconfig,就会弹出如下配置界面。
在这里插入图片描述
在这里插入图片描述

(2.2)挂在外部的esp-idf代码包。
如果在宿主机里面有了esp-idf的软件包,可以在创建容器的时候,把这个路径覆盖到容器的一个目录下面,使用命令:sudo docker run -it -v 宿主机路径:容器目录 -d d2098b4ed96c
到容器的目录下面就能看到宿主机的代码包,然后就可以进行继续开发了。
在这里插入图片描述
在这里插入图片描述
可以看到我们已经成功的把宿主机的目录挂载到容器中,
在这里插入图片描述
注:
(1)也可以把多个宿主机的目录覆盖到容器中,只要加-v选项,比如可以把宿主机的/dev覆盖到容器的/dev,此时,就可以在容器中使用idf.py flash命令直接进行烧写代码。
由于/dev/下面都是设备文件所以,进行/dev覆盖的时候,还需要加参数--privileged

sudo docker run -it --privileged -v /dev:/dev -d d2098b4ed96c

(2)docker可以使用一个镜像创建无数多容器,容器使用还有很多其他操作,百度即可。
停止容器命令:docker kill 容器ID
删除容器命令:docker rm 容器ID

七、总结。

(1)安装docker软件。
(2)下载镜像环境包。
(3)加载docker镜像。
(4)创建容器。
(5)进入容器。
(6)进行开发。

八、视频教程。

如果大伙还想详细了解过程,可以观看下面视频教程:
https://edu.51cto.com/course/27473.html

QQ交流群:454308668

### 如何在Linux系统上搭建ESP32 IDF开发环境 为了在Linux系统(推荐Ubuntu)上成功配置ESP32IDF开发环境,以下是详细的说明: #### 安装必要的依赖项 首先,在开始之前需要安装一些基础工具和库文件。这些工具对于构建编译器链以及运行ESP-IDF至关重要[^1]。 ```bash sudo apt-get update sudo apt-get install git wget flex bison gperf python3 python3-pip python3-setuptools cmake ninja-build ccache libffi-dev libssl-dev dfu-util ``` 上述命令会安装一系列必需的软件包,包括`git`, `wget`, 和其他用于支持ESP-IDF框架的核心组件。 #### 获取并设置ESP-IDF源码 下一步是从Espressif官方仓库克隆最新的ESP-IDF版本到本地目录中[^5]。 ```bash mkdir -p ~/esp cd ~/esp git clone -b release/v4.4 --recursive https://github.com/espressif/esp-idf.git cd esp-idf git submodule update --init --recursive ``` 通过执行以上操作可以获取指定分支上的稳定版ESP-IDF代码及其子模块资源。 #### 配置Python虚拟环境 创建一个独立于系统的Python虚拟环境来管理所有与项目相关的第三方库[^3]。 ```bash python3 -m venv ~/.virtualenvs/idf_venv source ~/.virtualenvs/idf_venv/bin/activate pip install --upgrade pip setuptools wheel pip install -r $IDF_PATH/requirements.txt ``` 这一步骤确保了即使不同项目的依赖存在冲突也不会互相影响,并且能够保持全局Python环境整洁无污染。 #### 设置环境变量 为了让终端识别新建立起来的工作区路径,需临时或者永久修改shell profile文件中的PATH参数值。 ```bash export PATH=$HOME/.espressif/python_env/idf4.4_py3.7_env/bin:$PATH export IDF_PATH=~/esp/esp-idf ``` 如果希望每次打开新的Terminal窗口都能自动加载这些设定,则可将其加入~/.bashrc 或者 ~/.zshrc 文件里保存下来长期生效。 #### 测试初始工程模板 最后验证整个流程是否顺利完成的一个方法就是尝试启动hello world样例程序[^2]。 ```bash cd ~/esp-idf/examples/get-started/hello_world idf.py set-target esp32 idf.py menuconfig idf.py build idf.py flash monitor ``` 当看到串口打印出来的"Hello world!"消息时就表明已经成功完成了全部准备工作! ---
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值