arch/arm/boot/dts/***.dtsi:21:48: fatal error: dt-bindings/clock/***-clock.h: No such file or direct

本文介绍了解决在使用Hi3556V200芯片进行Linux内核Device Tree编译时遇到的致命错误的方法。当在arch/arm/boot/dts目录下编译时,找不到dt-bindings/clock/hi3556v200-clock.h文件,导致编译失败。解决此问题的关键在于正确设置符号链接,确保编译系统能找到所需的头文件。

In file included from arch/arm/boot/dts/hi3556v200-demb.dts:21:0:
arch/arm/boot/dts/hi3556v200.dtsi:21:48: fatal error: dt-bindings/clock/hi3556v200-clock.h: No such file or directory
 #include <dt-bindings/clock/hi3556v200-clock.h>
 

解决方法:

cd osdrv/opensource/kernel/linux-4.9.y/arch/arm/boot/dts/include/
ln -s ../../../../../include/dt-bindings .

 

<think>好的,我现在需要帮助用户解决编译时遇到的缺失头文件的问题。用户提到在编译arch/arm/dts/imx50.dtsi时,缺少dt-bindings/clock/imx5-clock.h文件。让我先理清楚这个问题的可能原因和解决办法。 首先,根据用户提供的错误信息,问题出在设备树文件.dts.dtsi)中包含了某个头文件,但编译器不到这个头文件。根据之前的引用,比如引用[1]和[2],类似的问题通常是因为缺少相应的头文件路径或者相关的包没有正确安装。 接下来,我需要确认dt-bindings/clock/imx5-clock.h这个文件的位置。通常,这些绑定文件位于内核源代码的include目录下,比如include/dt-bindings/clock/imx5-clock.h。如果用户的内核源码中没有这个文件,可能是内核版本过旧或者配置不正确。 解决方案可能包括几个步骤。首先,检查内核源码中是否存在该文件。如果不存在,可能需要更新内核源码到包含该文件的版本。其次,确保内核配置正确,启用了相关的选项,比如CONFIG_IMX5_CLOCK。另外,可能需要安装开发包或头文件包,比如linux-headers,不过这可能因发行版而异。此外,检查设备树文件中的include路径是否正确,可能需要指定正确的相对路径或使用编译选项添加包含路径。 然后,我需要参考之前的引用。比如引用[4]提到,在iMX6开发板中,类似的头文件位于arch/arm/boot/dts/imx6q-pinfunc.h,这说明在内核源码的特定架构目录下可能存在这些绑定文件。因此,用户需要确认imx5-clock.h是否位于类似的位置,或者在dt-bindings目录下是否有相应的符号链接。 另外,编译设备树时可能需要指定包含路径,例如使用-I选项指定dt-bindings所在的目录。如果头文件路径没有正确包含,编译器会报错,所以需要检查Makefile或编译命令是否正确设置。 最后,用户可能需要生成该头文件。某些情况下,绑定文件可能通过脚本生成,比如使用dtc工具或其他方式,因此需要检查文档是否有相关说明,并确保生成步骤正确执行。 总结可能的解决步骤:检查文件是否存在,更新内核源码,安装必要包,调整包含路径,生成缺失文件,检查编译配置。需要逐步指导用户执行这些步骤,并给出具体的命令示例,比如使用find命令查文件,或者更新源码的方法。</think>根据编译错误提示,解决$arch/arm/dts/imx50.dtsi$缺少$dt-bindings/clock/imx5-clock.h$的问题可按照以下步骤进行: ### 解决方案 1. **验证文件路径存在性** - 在内核源码目录执行: ```bash find . -name "imx5-clock.h" ``` - 正确路径应为:$./include/dt-bindings/clock/imx5-clock.h$,若不存在则需更新内核源码 2. **更新内核源码** ```bash git fetch origin git checkout <包含该文件的稳定分支> ``` 建议使用Linux 4.1+版本,该版本已完整支持i.MX5系列时钟绑定[^4] 3. **添加符号链接(若头文件存在但路径不对)** ```bash ln -s $PWD/include/dt-bindings/clock/imx5-clock.h $PWD/arch/arm/boot/dts/dt-bindings/clock/ ``` 4. **配置编译选项** 在Makefile中添加包含路径: ```makefile DTC_FLAGS += -I$(srctree)/include/dt-bindings ``` ### 验证步骤 ```bash make ARCH=arm dtbs -j$(nproc) ``` 成功编译后应输出$imx50.dtb$文件,无头文件缺失报错 ### 常见问题排查 | 现象 | 解决方法 | |------|----------| | 文件存在于include/但未识别 | 检查设备树文件中的include路径应写为$#include <dt-bindings/clock/imx5-clock.h>$ | | 版本冲突导致头文件缺失 | 回退到已知支持i.MX5的稳定内核版本(如linux-4.1.15) | | 跨架构编译环境问题 | 安装交叉编译头文件包:<br>$sudo apt install linux-headers-$(uname -r)-arm$ |
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值