目录
前言
此文章记录使用WSL1安装ESP-IDF的安装过程。乐鑫官方的开发框架,支持多个操作系统,使用Linux编译速度较快,考虑便捷性,遂选择WSL。如无其他用途,最好还是选用WSL1,对CPU、内存占用较少。用WSL2需安装连接USB设备的驱动,较麻烦,我尝试安装,然后放弃了。
一、安装WSL
参照微软官方教程:安装 WSL | Microsoft Learn
1.安装Ubuntu
在Windows功能中启动wsl后,在微软商店中选择Ubuntu分发版下载,最好是最新版本。如
2.转移Ubuntu
其默认安装在C盘,如空间不足可转移到其他盘:
# PowerShell中运行以下命令
# 导出WSL到指定目录
wsl --export <Distribution Name> <FileName>
# 注销WSL
wsl --unregister <DistributionName>
#导入WSL到指定目录
wsl --import <Distribution Name> <InstallLocation> <FileName>
# 如:
wsl --export Ubuntu-22.04 F:\\wsl.tar
wsl --unregister Ubuntu-22.04
wsl --import Ubuntu-22.04 F:\\WSL1 F:\\wsl.tar
3.设置Ubuntu默认用户
# 更改发行版的默认用户
<DistributionName> config --default-user <Username>
# 如
Ubuntu-22.04 config --default-user johndoe
因为修改过路径,如果出现错误,则需使用其他办法 :
原文链接:WSL的迁移与切换 - 知乎
新导入的系统默认启动账户为root,需要修改成普通账户。 其思路即修改注册表中相关的键值,即将注册表计算机\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Lxss\{...}中的DefaultUid值设置为子系统用户对应的gid值(通过id -u来获取,或者直接查看/etc/passwd文件)。
# 可通过自定义powershell函数,然后调用,完成上述操作:
# 定义函数WSL-SetDefaultUser,接收参数distro和user
Function WSL-SetDefaultUser ($distro, $user) { Get-ItemProperty Registry::HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Lxss\*\ DistributionName | Where-Object -Property DistributionName -eq $distro | Set-ItemProperty -Name DefaultUid -Value ((wsl -d $distro -u $user -e id -u) | Out-String); };
# 调用函数,此处对应发行版名称Ubuntu,用户名为yz: WSL-SetDefaultUser <DistroName> <UserName>
WSL-SetDefaultUser Ubuntu yz
# 取消函数定义
Remove-Item Function:WSL-SetDefaultUser
4.Ubuntu换源
参考链接:https://blog.csdn.net/xiangxianghehe/article/details/122856771
为提高软件下载速度,编辑以下文件,更换其镜像源
sudo vim /etc/apt/sources.list
推荐中科大源:
deb https://mirrors.ustc.edu.cn/ubuntu/ jammy main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ jammy main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ jammy-security main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ jammy-security main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse
二、安装ESP-IDF
参考链接:https://docs.espressif.com/projects/esp-idf/en/latest/esp32/get-started/linux-macos-setup.html
1.安装先决条件
sudo apt-get install git wget flex bison gperf python3 python3-venv cmake ninja-build ccache libffi-dev libssl-dev dfu-util libusb-1.0-0
2.获取ESP-IDF
查阅:https://github.com/espressif/esp-idf
选择所需的发行版本,推荐v5.0以上 ,不建议直接下载zip包,缺少.git目录,后续会报错,使用clone较完整:
git clone --recursive https://github.com/espressif/esp-idf.git
必要时加入sudo,提高权限。
如下载组件源文件时出错,可使用以下命令更新:
git submodule update --init --recursive
3.设置工具
# 进入下载的目录中,运行:
./install.sh
默认安装在用户目录下.espressif 中。
4.环境变量取别名
环境变量每次重新打开终端,都需执行export.sh,为此取个别名
sudo vim ~/.bashrc
# 添加内容($HOME为Ubuntu用户目录)
alias IDF='. $HOME/esp/esp-idf/export.sh'
如esp-idf 安装在其他盘,根目录使用/mnt/,如:
alias IDF='. /mnt/i/esp/esp-idf/export.sh'
如果一切顺利,没有出错的话,便可复制一个工程,编译试试结果,
总结
1、网络问题:
其安装主要问题是,网络问题,github常常访问失败,如Windows开启代理,可在终端中添加临时代理:
# 10809对应代理端口
export https_proxy=http://localhost:10809
但有时也无法加速,总之看运气。
2、编译找不到头文件
如果工程中自定义组件如:
在编译时无法找到头文件,可在其CMakeLists.txt中添加 REQUIRES,如 :
file(GLOB_RECURSE srcs src/*.c)
idf_component_register(SRCS ${srcs}
INCLUDE_DIRS "include"
REQUIRES driver
)
3、下载组件源文件总出错
如果在clone esp-idf组件源文件时,总是出错,可直接去GitHub乐鑫库中下载缺少的源文件,如一个组件的zip包,然后解压粘贴在对应位置即可。
安装过多次,每次都能遇到各种问题,使用WSL2安装时,还遇到编译使用cmake不是ninja,编译巨慢的情况,编译整个工程足足花了一个半小时,心态大崩,删除重来又正常了...