ESP32终端环境(non-GUI)搭建错误点

我的环境Ubuntu18.04.4 LTS,本教程不涉及搭建详细过程包括Linux图形化搭建过程,只讲Ubuntu搭建ESP32非图形化环境过程遇到的错误点:工作路径问题(找不到IDF_PATH)、仓库下载问题(git clone)、工具链版本问题(WARNING: Toolchain version is not supported)。

1、工作路径问题--找不到IDF_PATH
        梦魇般的错误“Makefile:8: /make/project.mk: No such file or directorymake: *** No rule to make target '/make/project.mk'.  Stop.”明显是指找不到环境变量IDF_PATH的定义,当然环境变量我也设置正确,具体我在/etc/profile和全局.bashrc全都加了“export IDF_PATH=/esp/esp32/esp-idf”并且让其立马生效(source /etc/profile),

甚至.local、.profile终端直接执行这条环境变量设置指令等多种设置方法,可它为何还是找不到IDF_PATH定义呢?为进一步验证还终端输入“echo $IDF_PATH”却能正确返回值“/esp/esp32/esp-idf”并且提示重复定义了很多次(因为多种方式都设置生效了),那就更没道理了,明明设置成功了,为什么却找不到定义?于是噩梦开始,我怀疑权限问题,但make和sudo make结果一样,按官网教程手动去搭建步骤虽麻烦且还是会有新问题出现,但上述问题依然没解决。所以一遍遍找寻,终于让我这个linux新手得到了答案。
        既然指定路径找不到,换个路径试试,原先的“/esp/esp32/”根目录文件夹整个移到“/home/mxj/esp/esp32/”用户目录,此时文件夹上有个大大的锁,于是开放权限”sudo chown -R mxj:mxj esp32”,make编译,世界终于清静。原来之前一直是整个文件夹属性是root:root,然而bash默认是user:user,即使sudo赋予普通用户以超级用户权限,但还是处于用户态,只是临时拥有最高权限,正确做法即根目录下就要”su”切换至root:root然后再编译类似内核编译。或者移动工作目录文件夹到~/用户态,然后就直接make,结论就是配置的环境要和工作目录处于同一属性包括用户和组。

2、仓库下载问题--git clone
        乐鑫的仓库克隆时超级慢,它不属于Canonical官方源和合作源,加上厚厚的墙,16M的下载速度只有可怜5KB/s(不能网页直接下载,会丢失版本信息,编译会报错)。解决方法:找到当前网络下DNS最快的IP,bash输入“nslookup github.com”和“nslookup github.global.ssl.fastly.net”,依次会返回最快IP,复制下来然后”sudo vim /etc/hosts”把IP映射编辑上去(每次换网络都要把原先设置的IP屏蔽重新寻找最快IP再重新编辑),

但github服务器在国外,建议开个代理节点,打开某某科学上网工具xx-linux-qt5.appimage(国情会敏感词封杀)查看sock5代理设置,然后bash输入“git config --global https.proxy 'socks5h://127.0.0.1:1080'”,设置完成然后重启网络服务“sudo /etc/init.d/networking restart”即可加速git clone速度,目前我的速度只加速到400KB/s,还没完全加速,待研究。

3、工具链版本问题--WARNING: Toolchain version is not supported
        通过了上面的关卡,编译发现还是报错no matching function for call to 'sigaction::sigaction(int&, sigaction*, int)'和recipe for target 'asio/asio/src/asio.o' failed,这个问题我忽视了最开始的提示:
WARNING: Toolchain version is not supported: crosstool-ng-1.22.0-80-g6c4433a
Expected to see version: esp-2019r2
Please check ESP-IDF setup instructions and update the toolchain, or proceed at your own risk.
WARNING: Compiler version is not supported: 5.2.0
Expected to see version(s): 8.2.0


这个问题恰好espressif的仓库Issue4710(https://github.com/espressif/esp-idf/issues/4710)提到,所以是版本问题,于是查询当前ESP_IDF和交叉工具链的版本信息很有必要,bash输入“git describe --tags”查询IDF版本,输入“xtensa-esp32-elf-gcc -v”查询交叉工具链crosstool-NG版本,于是经过多次尝试,git得到的IDF是最新版本V4.2,必须要较新工具链crosstool-NG esp-2019r2(下载链接:https://dl.espressif.com/dl/xtensa-esp32-elf-gcc8_2_0-esp-2019r2-linux-amd64.tar.gz)。具体见官网教程https://docs.espressif.com/projects/esp-idf/en/latest/get-started-legacy/linux-setup.html

发布了1 篇原创文章 · 获赞 0 · 访问量 9

猜你喜欢

转载自blog.csdn.net/u014529240/article/details/105122246