报错 documentation/kbuild: is a directory. stop(Windows 内置Linux子系统WSL编译Linux内核)

文章讲述了在Windows10中使用Linux子系统编译SDK时遇到的错误,特别提到空格文件名和主机虚拟机共享文件区可能导致的问题。最终解决方案是将SDK从共享文件区移动到用户本地工作区。

目录

背景

苦苦求索

解决方案


背景

Windows 10的内置子系统Linux 编译SDK,在clean 时出现的报错.

苦苦求索

网上很多说是文件名有空格, 这确实会导致这个问题.

所以要先排除目录,文件名没有空格的情况.

找到名字有空格的文件

find ./ -name "* *"

若是没有输出

OK,那么终于走出了一个坑.

但是这个报错依然存在.

终于找到一个线索.

make mrproper时make[1]:***Documentation/Kbuild:是一个目录;停止; - in_the_wind - 博客园 (cnblogs.com)

总结就是,没有在虚拟机内部操作,而是在主机虚拟机共享的文件区中进行操作。

'主机虚拟机共享的文件区中进行操作'  这句话如何理解?

df -h

 

 这里出现的 /mnt/c   /mnt/d就是 主机的磁盘 C 和 D.这里就是共享的文件区.这个时候我的SDK文件在此处进行编译(看起来是非常方便的,毕竟文件共享啊,猜想在NFS文件系统应该也会出现这个问题.) , 于是在这类的共享的文件区编译 则是导致该问题的原因.

解决方案

把SDK从这类共享区移到从/home/用户/工作区中编译.则问题解决.

tmp/.config-package.in:105487:error: recursive dependency detected! For a resolution refer to Documentation/kbuild/kconfig-language.txt subsection "Kconfig recursive dependency limitations" tmp/.config-package.in:105487: symbol PACKAGE_luci is selected by PACKAGE_luci-hyfi For a resolution refer to Documentation/kbuild/kconfig-language.txt subsection "Kconfig recursive dependency limitations" tmp/.config-package.in:99312: symbol PACKAGE_luci-hyfi is selected by PACKAGE_hyfi-ui For a resolution refer to Documentation/kbuild/kconfig-language.txt subsection "Kconfig recursive dependency limitations" tmp/.config-package.in:100758: symbol PACKAGE_hyfi-ui depends on PACKAGE_luci-app-firewall For a resolution refer to Documentation/kbuild/kconfig-language.txt subsection "Kconfig recursive dependency limitations" tmp/.config-package.in:105732: symbol PACKAGE_luci-app-firewall is selected by PACKAGE_luci tmp/.config-package.in:13970:error: recursive dependency detected! For a resolution refer to Documentation/kbuild/kconfig-language.txt subsection "Kconfig recursive dependency limitations" tmp/.config-package.in:13970: symbol PACKAGE_kmod-qca-nss-dp is selected by PACKAGE_kmod-qca-nss-ppe-ds For a resolution refer to Documentation/kbuild/kconfig-language.txt subsection "Kconfig recursive dependency limitations" tmp/.config-package.in:14891: symbol PACKAGE_kmod-qca-nss-ppe-ds is selected by PACKAGE_kmod-qca-wifi-unified-profile For a resolution refer to Documentation/kbuild/kconfig-language.txt subsection "Kconfig recursive dependency limitations" tmp/.config-package.in:102624: symbol PACKAGE_kmod-qca-wifi-unified-profile depends on PACKAGE_kmod-qca-nss-dp tmp/.config-package.in:16074:error: recursive dependency detected! For a resolution refer to Documentation/kbuild/kconfig-language.txt subsection "Kconfig recursive dependency limitations" tmp/.config-package.in:16074: symbol PACKAGE_kmod-pptp is selected by PACKAGE_kmod-qca-nss-drv-pptp For a resolution refer to Documentation/kbuild/kconfig-language.txt subsection "Kconfig recursive dependency limitations" tmp/.config-package.in:14534: symbol PACKAGE_kmod-qca-nss-drv-pptp depends on PACKAGE_kmod-pptp tmp/.config-package.in:80925:error: recursive dependency detected! For a resolution refer to Documentation/kbuild/kconfig-language.txt 这些是报错了吗?怎么回事?
最新发布
10-01
是的,你看到的这些信息是 **报错信息**,属于 **Kconfig 配置系统中的递归依赖(recursive dependency)错误**,通常出现在 OpenWrt、Linux 内核、或其他使用 `kbuild` 和 `Kconfig` 构建系统的项目中。 --- ### ✅ 报错含义: 这些错误提示表明: > 在配置过程中,某些软件包之间存在 **循环依赖(A 依赖 B,B 又依赖 A)**,导致无法正确解析依赖关系。 例如: ``` symbol PACKAGE_luci is selected by PACKAGE_luci-hyfi symbol PACKAGE_luci-hyfi is selected by PACKAGE_hyfi-ui symbol PACKAGE_hyfi-ui depends on PACKAGE_luci-app-firewall symbol PACKAGE_luci-app-firewall is selected by PACKAGE_luci ``` 这就构成了一个 **循环依赖链:** ``` PACKAGE_luci → PACKAGE_luci-app-firewall → PACKAGE_hyfi-ui → PACKAGE_luci-hyfi → PACKAGE_luci ``` --- ### ✅ 报错原因: 1. **Kconfig 不允许循环依赖**: - Kconfig 是一种用于配置选项的 DSL(领域特定语言),它要求依赖关系必须是一个 **有向无环图(DAG)**。 - 出现循环依赖时,配置系统无法判断哪个包应该先启用,从而报错。 2. **配置文件或 Makefile 定义错误**: - 可能是某个 `.config` 文件或 `Kconfig` 文件中定义了错误的依赖关系。 - 比如某个包错误地 `select` 或 `depends on` 了另一个反过来依赖它的包。 3. **SDK 或固件版本不兼容**: - 使用的 SDK 版本、固件分支可能存在包配置的冲突。 - 特别是在自行添加或修改了某些组件后更容易出现此类问题。 --- ### ✅ 解决方法: #### ✅ 方法一:检查并修改 Kconfig 或 Makefile 文件 找到报错中提到的包,查看它们的 `Kconfig` 或 `Makefile` 文件,检查它们之间的依赖关系: - 通常在 `package/` 目录下。 - 查找 `select PACKAGE_xxx` 或 `depends on PACKAGE_xxx` 的语句。 **解决方式:** - 去掉不必要的 `select` 或 `depends on`。 - 用 `depends on` 替代 `select`(如果不需要强制启用)。 - 或者重新设计依赖结构,打破循环。 #### ✅ 方法二:临时禁用某些包 如果你不需要某些包,可以在配置界面中禁用它们: ```bash make menuconfig ``` 进入配置界面后,手动取消选择涉及循环依赖的包(如 `luci-hyfi`、`hyfi-ui` 等)。 #### ✅ 方法三:使用 `FORCE=1` 强制跳过检查(慎用) ```bash make FORCE=1 ``` > ⚠️ 注意:这可能会导致构建失败或运行时异常,仅用于临时测试。 #### ✅ 方法四:升级 SDK 或固件版本 有时这类问题已经被官方修复,尝试: - 升级到更高版本的 SDK。 - 切换到官方稳定分支。 --- ### ✅ 示例修复思路: 以这个循环为例: ``` PACKAGE_luci → PACKAGE_luci-app-firewall → PACKAGE_hyfi-ui → PACKAGE_luci-hyfi → PACKAGE_luci ``` 你可以尝试: - 修改 `PACKAGE_luci-hyfi` 的 `Kconfig` 文件,去掉对 `PACKAGE_luci` 的 `select`。 - 或者修改 `PACKAGE_luci` 的配置,改为 `depends on` 而不是 `select`。 --- ### ✅ 总结: | 问题 | 原因 | 解决方法 | |------|------|-----------| | Kconfig 报错 `recursive dependency detected` | 包之间存在循环依赖 | 修改配置文件,打破循环依赖关系 | --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值