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

riscv64 GCC交叉编译SPL报stddef.h不存在但文件实际存在

问题根因

核心报错fatal error: stddef.h: No such file or directory和头文件实际不存在无关:SPL作为裸机引导程序,构建脚本默认会加-nostdinc编译参数,屏蔽GCC默认的头文件搜索路径,避免拽入主机系统的头文件导致编译出错,但现有配置漏加了riscv64交叉工具链自带的内置头文件目录,所以哪怕stddef.h确实在工具链目录里,编译器也搜不到。
开头输出的fatal: No names found, cannot describe anything.是git生成版本提交信息时的警告,原因是源码仓库没有打标签,不影响正常编译流程,无需额外处理。

解决步骤
  • 临时编译方案:执行make命令时手动追加头文件搜索路径,直接传入查到的工具链内置include目录即可:
make CROSS_COMPILE=riscv64-unknown-linux-gnu- p=sun20iw1p1 mmc EXTRA_CFLAGS="-I/home/nihao/sdk/tina-d1-open_new/lichee/brandy-2.0/tools/toolchain/riscv64-linux-x86_64-20200528/lib/gcc/riscv64-unknown-linux-gnu/8.1.0/include"

注意路径里去掉冗余的bin/..相对路径段,直接写绝对路径避免解析错误。

  • 永久修改方案:编辑SPL源码目录下的mk/config.mk文件,找到全局CFLAGS配置段,追加一行头文件路径配置:
# 把路径替换成本地实际的工具链根目录即可
CFLAGS += -I/home/nihao/sdk/tina-d1-open_new/lichee/brandy-2.0/tools/toolchain/riscv64-linux-x86_64-20200528/lib/gcc/riscv64-unknown-linux-gnu/8.1.0/include

保存后直接执行原编译命令即可,后续不用每次编译都手动传参数。

  • 补充说明:工具链对应include目录下已经包含了stdbool.h、stdint.h、stddef.h等SPL编译需要的所有内置头文件,加完这一个路径就能解决所有同类型的头文件缺失报错,不用逐个加文件路径。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 04:09:31