当使用ESP-IDF框架编写项目的时候,往往会在编译的时候碰见这种错误,网上找了很久解决问题的方法,大多数说是路径不对,需要包含进去。

../main/app_sd.c:15:10: fatal error: esp_vfs_fat.h: No such file or directory
 #include "esp_vfs_fat.h"
          ^~~~~~~~~~~~~~~
compilation terminated.
[96/108] Building C object esp-idf/main/CMakeFiles/__idf_main.dir/app_wifi.c.obj

 查找esp_vfs_fot.h文件得知其在fatfs目录下vfs目录下,于是在项目的CMakeList.txt中设置如下

set(EXTRA_COMPONENT_DIRS 
    $ENV{IDF_PATH}/components/fatfs)

编译后依然报错。 

 进入到fatfs组件中,修改CMakeList.txt,修改component.mk,一通折腾,依然问题如故。

最终发现问题的根源在于,编译的时候此组件的include压根没有进入编译坏境里,那么需要想办法把这个组件添加进require里

最后在项目目录的main目录下发现一个CMakeList.txt文件,里面有个require

set(COMPONENT_REQUIRES
    esp32-camera
    esp-face
    nvs_flash
    esp_http_server
    fb_gfx
    mdns
    wpa_supplicant
    fatfs
    )

 于是添加fatfs,编译后终于不出错了。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐