【发布时间】:2013-03-24 14:21:41
【问题描述】:
出于一个非常特殊的原因,我正在尝试使用内核中内置的几个模块来编译 Linux 2.6.32.6 内核。我在 NFS 上包含了根文件系统,试图通过 LAN PXE 引导我自己的自定义救援 Live-CD。在包含 ROOT_NFS 所需的依赖项和模块后,我尝试使用 make bzImage 仅编译 Linux 内核。当它运行时我得到错误
make[4]: *** No rule to make target './linux-2.6.32.6/include/linux/netfilter/xt_CONNMARK.h', needed by './linux-2.6.32.6/usr/include/linux/netfilter/.install'. Stop.
现在我尝试在配置中禁用 Netfilter 模块,并尝试找到任何需要 Netfilter 的依赖项,但此错误仍然不断发生。
任何解决此错误的建议都会很棒。
【问题讨论】:
-
您可能需要清理该文件的
depends。 kbuild 应该会发现您更改了.config,但对于这个旧版本的 Linux 可能不会。 -
首先执行
make clean或手动删除Makefile依赖信息。您的问题似乎非常熟悉,但我不记得问题是什么。可能与make O=...有关。 -
经过几次尝试,我删除了 Kbuild 中的特定条目。然而奇怪的是,
xt_CONNMARK.h有 2 个条目。失败的一个全是大写,另一个全是小写。遇到了更多的情况,但是一旦我删除了所有事件(总共大约 5 个),系统就可以正确编译和启动。 -
@artlessnoise 知道为什么会出现这个问题吗?是不是故意的?
-
我在做一些奇怪的事情,我切换了一个文件,手动编辑了
.config或类似的东西。它可能与编译器有关。 “C”文件有#include <xt_connmark.h>,文件名为xt_CONNMARK.h或类似名称。抱歉,我可以很好地放置它,但我肯定对那个文件有类似的问题。依赖是使用gcc自动生成的,因此它可能制定了混合大小写依赖规则,查看#include而不是实际打开的文件。
标签: linux-kernel