ESP32之Linux编译环境搭建流程

article/2025/7/5 3:50:28

背景:为了解决 “windows环境中编译ESP32代码速度慢” 的问题,现搭建一个Linux环境,让windows下的VScode连接到Linux环境,VSCode负责编辑代码,虚拟机用于编译代码。

目录

一、安装VMware

1.1 获取VMware安装包

1.2 安装安装包

二、安装Ubuntu

2.1 获取Ubuntu安装包

2.2 安装Ubuntu

2.2.1 配置阶段

2.2.2 安装阶段

2.2.3 查看阶段

2.2.4 通过MobaXterm登录Ubuntu

三、安装必要工具

3.1 安装各种必要的工具

3.2 拉取esp-idf工具

3.3 执行gitee工具切换镜像脚本

3.4 拉取esp-idf源码

3.5 切换esp-idf版本分支

3.6 安装编译工具

3.7 设置环境变量

3.8 拷贝源码

3.9 编译、下载与监视

3.9.1 编译

3.9.2 下载

3.9.3 监视

四、配置VSCode

4.1 安装插件

4.2 配置Remote-SSH

4.3 在远程SSH中安装插件

4.3.1 安装C/C++插件

4.3.2 安装ESP-IDF插件

4.3.3 配置esp-idf库文件查看路径

4.3.4 设置签名(解决每次都要输密码的问题)

五、参考资料


一、安装VMware

1.1 获取VMware安装包

方式1:百度网盘获取

方式2:官网下载

1.2 安装安装包

安装过程一直点击下一步就可以了,详细过程省略。

二、安装Ubuntu

2.1 获取Ubuntu安装包

点击获取ubuntu-20.04.6-live-server-amd64.iso安装包

2.2 安装Ubuntu

2.2.1 配置阶段

打开VMware-->创建新的虚拟机-->自定义-->下一步

下一步-->浏览-->选择对应Ubuntu镜像文件版本打开-->下一步

设置用户名和密码-->下一步

设置名称,选择安装位置-->下一步

设置处理器和内核数量-->下一步

下一步-->下一步-->下一步-->下一步-->下一步-->设置磁盘大小-->下一步

下一步-->完成。

2.2.2 安装阶段

选择英语:

选择不更新:

一直Done-->继续

输入之前设置的用户名和密码

勾选安装SSH服务器

安装中,需要漫长的等待。注意:如果遇到询问是否需要升级,要选择取消升级

等待安装结束后,输入用户名和密码

2.2.3 查看阶段

输入指令安装网络工具(用于查看IP地址):

sudo apt-get install net-tools

等待安装完成后,输入以下指令,查看IP地址:

ifconfig

可以看到IP地址是:192.168.37.128

2.2.4 通过MobaXterm登录Ubuntu

通过百度网盘下载MobaXterm(免安装),并打开,点击Session,选择SSH,输入IP地址和用户名,点击OK

输入密码,点击Yes

至此就登录了Ubuntu系统了

三、安装必要工具

3.1 安装各种必要的工具

sudo apt-get install git wget flex bison gperf python3-pip python3-venv cmake ninja-build ccache libffi-dev libssl-dev dfu-util libusb-1.0-0 net-tools

3.2 拉取esp-idf工具

新建esp32目录
mkdir esp32
cd esp32拉取esp-idf工具
git clone https://gitee.com/EspressifSystems/esp-gitee-tools.git

先新建一个esp32的目录,再拉取esp-idf工具

3.3 执行gitee工具切换镜像脚本

进入esp-gitee-tools目录
cd esp-gitee-tools执行脚本
./jihu-mirror.sh set回到上层目录
cd ..

执行这句命令后,会将github的地址自动替换成jihu上的镜像地址,这样就不用担心git的访问问题了。

3.4 拉取esp-idf源码

git clone --recursive https://github.com/espressif/esp-idf.git或者(指定版本)
git clone -b v5.3.2 --recursive https://github.com/espressif/esp-idf.git

3.5 切换esp-idf版本分支

切换esp-idf版本分支到v5.2:

cd esp-idf
git checkout v5.2

如果提示失败或有错误试下这句:../esp-gitee-tools/submodule-update.sh

更新子模块:

git submodule update --init --recursive

至此,esp-idf基本已经安装完了。

3.6 安装编译工具

由于可能需要用到不同型号的esp32,其安装工具可能都不一样,这个命令能把各个型号的安装工具都下载下来。在esp-idf路径中执行以下命令:

../esp-gitee-tools/install.sh

注意:如果卡住不动了,就关闭重新输入指令下载,直至全部下载完成

3.7 设置环境变量

方法1(临时配置,每次重新进入都要配置):

在esp-idf路径中执行下述命令,会自动把esp-idf的环境变量设置到当前环境变量路径中:

source export.sh

方法2(自动配置环境变量):

由于上述是一次性设置,重启后需要重新设置环境变量,如需每次打开时让其自动设置环境变量,需要在默认路径中将配置环境变量的命令添加进.profile文件中:

//进入默认路径
cd ~//用vim打开profile文件
vim .profile//在.profile文件最后一行插入以下命令,即可执行脚本,自动设置环境变量
source esp32/esp-idf/export.sh

回到当前界面后,输入exit退出,然后输入r即可重新进入:

3.8 拷贝源码

先新建一个工作目录workspace,然后拷贝demo程序(如hello_world)到此目录

3.9 编译、下载与监视

3.9.1 编译

cd helloworld
idf.py build

3.9.2 下载

idf.py flash
idf.py -p COMx falsh

提示没有USB权限,需要设置USB串口权限:

方法1(临时解决):

sudo chmod 777 /dev/ttyUSB0

方法2(永久解决,注意:sss需要换成你的用户名):

sudo usermod -aG dialout sss

如果还是提示错误,则在虚拟机左侧我的计算机-->Ubuntu sss-->鼠标右击-->选择设置-->USB控制器-->USB兼容性选择USB3.1即可。

重新烧录:

3.9.3 监视

idf.py monitor

四、配置VSCode

4.1 安装插件

安装Remote-SSH插件

4.2 配置Remote-SSH

打开Remote-SSH,点击设置,选择第一个:

设置IP地址和用户名,并保存后刷新:

右击选择“在当前窗口中连接”:

Linux --> 继续 --> 输入密码 --> :

打开工作目录的文件夹:

4.3 在远程SSH中安装插件

4.3.1 安装C/C++插件

4.3.2 安装ESP-IDF插件

4.3.3 配置esp-idf库文件查看路径

按Ctrl+Shift+P,选择ESP-IDF:Add VSCode Configuration Folder,这样就能查看源文件了

4.3.4 设置签名(解决每次都要输密码的问题)

(1)生成证书文件

先在windows中打开PowerShell,输入以下命令:

ssh-keygen -t ed25519 -C sss@gitee.com

然后一路回车到底:

根据路径打开文件id_ed25519.pub,复制其中的内容:

(2)编辑路径~/.ssh/authorized_keys文件

通过vim打开authorized_keys文件:

将前面复制的id_ed25519.pub文件中的内容粘贴到authorized_keys文件中,保存退出:

这样配置完后,就不需要每次打开VSCode都要输密码了。

五、参考资料

【【2024最新版 ESP32教程(基于ESP-IDF)】ESP32入门级开发课程 更新中 中文字幕】https://www.bilibili.com/video/BV1eRg7exEcT?p=2&vd_source=81a7e4213950c9b4e7925e57b921574a


http://www.hkcw.cn/article/hjawOEKdGg.shtml

相关文章

Python-matplotlib中的Pyplot API和面向对象 API

matplotlib中的Pyplot API和面向对象 API Pyplot API(状态机模式)面向对象 API 详解二者差别核心区别方法命名差异注意事项差别举例 🍅 Pyplot API(状态机模式)和面向对象 API 是两种不同的编程接口.🍅 它们…

BUUCTF之[ACTF2020 新生赛]BackupFile

打开环境就一句话 找出源文件! 结合题目名字&#xff1a;BackupFile 先用dirsearct扫描网站文件 发现一个index.php.bak ,拼接url下载 打开发现php代码 <?php include_once "flag.php";if(isset($_GET[key])) {$key $_GET[key];if(!is_numeric($key)) {exit…

Spring Boot 3.X 下Redis缓存的尝试(一):初步尝试

背景 想像一下有这么一个场景&#xff0c;一个系统有超多角色、角色下有多个菜单、菜单下有多个按钮权限&#xff0c;这种子父级关系查询每次向数据库查询相当耗时&#xff0c;那么我们是否可以将这种更新频次不高&#xff0c;而查询耗时的数据且不直接影响业务的数据放进缓存中…

基于springboot的民间文化艺术品销售系统

博主介绍&#xff1a;java高级开发&#xff0c;从事互联网行业多年&#xff0c;熟悉各种主流语言&#xff0c;精通java、python、php、爬虫、web开发&#xff0c;已经做了六年的毕业设计程序开发&#xff0c;开发过上千套毕业设计程序&#xff0c;没有什么华丽的语言&#xff0…

9 动态规划

9.3 爬楼梯 从1开始举例子发现规律 dp[i]dp[i-1]dp[i-2]; class Solution { public:int climbStairs(int n) {if(n<1){return 1;}vector<int>dp(n1);dp[2]2;dp[1]1;for(int i3;i<n;i){dp[i]dp[i-1]dp[i-2];}return dp[n];} }; 9.29 打家劫舍 1 确定dp数组下标与…

Playwright 测试框架 - Node.js

🚀超全实战:基于 Playwright + Node.js 的自动化测试项目教程【附源码】 📌 本文适合自动化测试入门者 & 前端测试实战者。从零开始手把手教你搭建一个 Playwright + Node.js 项目,涵盖配置、测试用例编写、运行与调试、报告生成以及实用进阶技巧。建议收藏!👍 �…

4.RV1126-OPENCV 图像轮廓识别

一.图像识别API 1.图像识别作用 它常用于视觉任务、目标检测、图像分割等等。在 OPENCV 中通常使用 Canny 函数、findContours 函数、drawContours 函数结合在一起去做轮廓的形检测。 2.常用的API findContours 函数&#xff1a;用于寻找图片的轮廓&#xff0c;并把所有的数…

Cursor从入门到精通实战指南(五):一键生成流程图/架构图,开发者必备收藏!

解锁Cursor&#xff1a;开启高效开发新境界 结合了GPT-4、Claude 3.5等强大的大语言模型&#xff0c;能够通过自然语言交互实现代码生成、原型设计、流程优化等功能。无论是编程新手还是经验丰富的开发者&#xff0c;都能借助Cursor的智能特性&#xff0c;快速完成复杂的编码任…

postman工具使用

基本功能操作 常用断言 定义&#xff1a;postman 断言借助 JavaScript - js 语言编写代码&#xff0c;自动判断预期结果与实际结果是否一致。&#xff08; 注意断言 代码写在 Tests 的标签中&#xff09; 断言响应状态码 断言响应体是否包含某个字符串&#xff08;Response bo…

【Elasticsearch】Elasticsearch 核心技术(一):索引

Elasticsearch 核心技术&#xff08;一&#xff09;&#xff1a;索引 1.索引的定义2.索引的命名规范3.索引的增、删、改、查3.1 创建索引3.1.1 创建空索引 3.2 删除索引3.3 文档操作3.3.1 添加/更新文档&#xff08;指定ID&#xff09;3.3.2 添加文档&#xff08;自动生成ID&am…

玩客云 OEC/OECT 笔记(2) 运行RKNN程序

目录 玩客云 OEC/OECT 笔记(1) 拆机刷入Armbian固件玩客云 OEC/OECT 笔记(2) 运行RKNN程序 RKNN OEC/OEC-Turbo 使用的芯片是 RK3566/RK3568, 这个系列是内建神经网络处理器 NPU 的, 利用 RKNN 可以部署运行 AI 模型利用 NPU 硬件加速模型推理. 要使用 NPU, 首先需要在电脑使…

【音视频】FFmpeg 硬件(NVDIA)编码H264

FFmpeg 与x264的关系 ffmpeg软编码是使⽤x264开源项⽬&#xff0c;也就是说ffmpeg软编码H264最终是调⽤了x264开源项⽬&#xff0c;所以我们要先理解ffmpeg和x264的调⽤关系&#xff0c;这⾥我们主要关注x264_init。对于x264的参数都在 ffmpeg\libavcodec \libx264.c x264\co…

深度学习和神经网络 卷积神经网络CNN

1.什么是卷积神经网络 一种前馈神经网络&#xff1b;受生物学感受野的机制提出专门处理网格结构数据的深度学习模型 核心特点&#xff1a;通过卷积操作自动提取空间局部特征&#xff08;如纹理、边缘&#xff09;&#xff0c;显著降低参数量 2.CNN的三个结构特征 局部连接&a…

论文略读:LIMO: Less is More for Reasoning

202502 arxiv 在数学推理领域&#xff0c;论文提出的LIMO仅用 817 条精心设计的训练样本&#xff0c;借助简单的监督微调&#xff0c;就全面超越了使用十万量级数据训练的主流模型 最近的大模型在预训练阶段已纳入海量数学知识&#xff08;比如Llama 3 仅在数学推理上的训练数…

web架构3------(nginx的return跳转,gzip压缩,目录浏览,访问控制和location符号优先级)

一.前言 本期继续来介绍nginx的各项配置&#xff0c;看着内容很多&#xff0c;但是主要还是介绍&#xff0c;内容还是很少的。 二.return和rewrite跳转 在我们配置ssl证书之后&#xff0c;如果把https的s去掉&#xff0c;就相当于去访问80端口了&#xff0c;https默认找的是…

大楼智能化建设设计方案(Word)

第一章 智能化设计 4 1.1 项目概况 4 1.2 设计原则 4 1.3 设计依据 6 1.4 项目总体规划 7 1.5 综合布线系统 8 1.5.1 综合布线系统 8 1.5.2 楼宇分机房系统 20 1.5.3 有线电视网 27 1.6 建筑智能化系统 37 1.6.1 周界防范系统 37 1.6.2 电子巡更系统 38 1.6.3…

Spring AI 之检索增强生成(Retrieval Augmented Generation)

检索增强生成&#xff08;RAG&#xff09;是一种技术&#xff0c;有助于克服大型语言模型在处理长篇内容、事实准确性和上下文感知方面的局限性。 Spring AI 通过提供模块化架构来支持 RAG&#xff0c;该架构允许自行构建自定义的 RAG 流程&#xff0c;或者使用 Advisor API 提…

【C++/Linux】TinyWebServer前置知识之IP协议详解

目录 IPv4地址 分类 IP数据报分片 IP 协议在传输数据报时&#xff0c;将数据报分为若干分片&#xff08;小数据报&#xff09;后进行传输&#xff0c;并在目的系统中进行重组&#xff0c;这一过程称为分片&#xff08;Fragmentation&#xff09;。 IP模块工作流程​编辑 I…

破局软件开发困境:一套‘一模到底‘的功能模型,如何撬动软件工程全数字化管控?

软件工程如同一场复杂的交响乐&#xff0c;功能模型是乐谱的主旋律&#xff0c;而需求、设计、开发、测试、运维、用户反馈、Bug、版本、状态等则是丰富的配器和节奏。传统模式下&#xff0c;这些元素常常各自为营&#xff0c;声部混乱&#xff0c;难以奏出和谐的乐章。如何才能…

RAG入门 - Retriever(1)

文章目录 环境准备知识库加载1. Retriever - embeddings &#x1f5c2;️1.1 将文档拆分为chunks1.2 词嵌入1.3 构建向量数据库Nearest Neighbor search algorithm &#xff08;最近邻搜索算法&#xff09;Distances &#xff08;距离&#xff09;点积&#xff08;Dot Product&…