折腾笔记
ESP-IDF 在 Windows 上被中文路径搞崩
现象是编译到一半突然报错,报的是工具链里的 objdump 和 kconfgen 处理路径失败,
提示信息一看就是”工具链损坏”或者”找不到文件”,很有欺骗性。
Failed to run objdump: ... ϵͳ�Ҳ���ָ�����ļ���
(连错误信息本身都是乱码——这已经是在提示编码问题了。)
原因
ESP-IDF 的构建系统在 Windows 上对非 ASCII 路径支持一直不好: 它会把项目路径传给一堆 Unix 风格的工具,中间某一层用本地代码页(GBK)处理,另一层用 UTF-8,于是路径对不上。
光把系统区域设置改成 UTF-8 不一定能解决,因为问题出在工具链对路径的处理,不在系统设置。
解法
最省事的办法:把工程挪到纯英文路径。
# 从
D:\新建文件夹\esp_project\
# 到
D:\esp\esp_project\
挪完 idf.py fullclean 再编译,一次就过。
顺带
- 同目录下的
build/会记住旧路径,挪完必须fullclean,否则报错看起来还在 - 如果非要用中文目录,可以用
subst映射一个盘符出来:
然后在subst X: "D:\新建文件夹\esp_project"X:\下编译。这是个绕过而不是解决,但确实能用
结论:嵌入式项目从一开始就把路径建成英文的,能省掉一次莫名其妙的排查。