You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在libDaisy项目中引入TensorFlow Lite for Microcontrollers遇头文件错误

解决TensorFlow Lite for Microcontrollers在libDaisy项目中的头文件引用问题

问题背景

在基于Electrosmith Daisy Seed(搭载STM32H7 MCU)的libDaisy HAL C++项目中引入TensorFlow Lite for Microcontrollers时,遇到TFLite内部头文件无法被编译器识别的问题。TFLite源码内的头文件均使用tensorflow/lite/micro/xxx.h这类格式引用,但编译器无法解析该路径。手动将引用改为相对路径可解决问题,但涉及数百处修改,工程量过大。

错误示例

DataInference/RainPredictor/../../tensorflow/tensorflow/lite/micro/all_ops_resolver.h:18:10: fatal error: tensorflow/lite/micro/compatibility.h: No such file or directory
   18 | #include "tensorflow/lite/micro/compatibility.h"
      |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

项目结构

libDaisy/
daisySP/
Firmware/
├── Firmware.cpp
├── tensorflow/
│   └── ... (TensorFlow Lite for Microcontrollers源码文件)
├── DataInference/
│   └── RainPredictor/
│       ├── model.h
│       └── rain_predictor.cpp
├── (其他无关文件)
└── Makefile

现有Makefile片段

# Project Name
TARGET = Firmware

# Sources
CPP_SOURCES = Firmware.cpp 

LDFLAGS += -u _printf_float

# Library Locations
LIBDAISY_DIR = ../libDaisy
DAISYSP_DIR = ../DaisySP
TENSORFLOW_DIR = ./tensorflow
TENSORFLOW_ROOT := ./tensorflow

# Core location, and generic makefile.
SYSTEM_FILES_DIR = $(LIBDAISY_DIR)/core
include $(SYSTEM_FILES_DIR)/Makefile

解决方案

核心思路是通过编译器选项添加头文件搜索路径,让编译器识别TFLite内部的tensorflow/...引用格式,无需修改TFLite源码。

方法1:直接修改Makefile添加包含路径

在现有Makefile的Library Locations代码块后,添加C++编译器的头文件搜索路径配置:

# 添加TensorFlow根目录到头文件搜索路径
CXXFLAGS += -I$(TENSORFLOW_ROOT)/..

或直接指定当前Firmware目录作为搜索路径:

CXXFLAGS += -I./

解释:TFLite内部的头文件引用从tensorflow/目录开始,将该目录的上级目录(即Firmware/)加入搜索路径后,编译器就能正确解析tensorflow/lite/micro/compatibility.h这类路径。

方法2:利用libDaisy通用Makefile的扩展变量

查看libDaisy的core/Makefile是否预留了用户自定义包含路径的变量(如USER_INCLUDES),若存在可直接使用:

USER_INCLUDES += -I./

这种方式更贴合libDaisy项目的构建规范。

优化代码中的头文件引用

完成Makefile配置后,rain_predictor.cpp中的引用可简化为更清晰的形式,无需多级相对路径:

#include "tensorflow/lite/micro/all_ops_resolver.h"
#include "tensorflow/lite/micro/micro_interpreter.h"
#include "tensorflow/lite/schema/schema_generated.h"
#include "model.h"

内容的提问来源于stack exchange,提问作者Max Campbell

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 18:32:20