跳到正文
CHUN折腾
折腾笔记

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:\ 下编译。这是个绕过而不是解决,但确实能用

结论:嵌入式项目从一开始就把路径建成英文的,能省掉一次莫名其妙的排查。