以下脚本用于构建特定的内核模块。
make modules M=net/sctp
经过第二次思考,我发现有些选项没有打开,这是
CONFIG_SCTP_DBG_OBJCNT=y
但是,在“make module”命令之后仍未编译选项控件的文件。我是否需要制作整个内核以使该选项生效?
答案 0 :(得分:2)
所有配置选项都将转换为宏,并且一旦您执行了构建内核的命令,就会将其写入include / generated / autoconf.h文件。
在此之后,当您更改任何配置选项时,您再次需要运行make命令,该命令会生成所需的文件以包含此新配置选项。但是,如果您在更改配置后使用命令“make M = / net / sctp modules”,则不会影响make。您可以运行“make modules”命令来生成所需的文件,并使用您选择的选项构建模块,而不是构建整个内核。如果您对新配置的选项有任何依赖性,这也是最佳解决方法。
但在您的情况下,如果您知道objcnt.c不依赖于任何其他内容,您可以更改sctp的make文件以包含您的文件。
vim net / sctp / Makefile
sctp-y += objcnt.o
然后你可以运行“make M = net / sctp modules”
答案 1 :(得分:0)
根据https://www.kernel.org/doc/Documentation/kbuild/modules.txt:
要构建外部模块,您必须拥有预构建的内核 包含构建中使用的配置和头文件。 [..]使用
make
目标modules_prepare
。这将 确保内核包含所需的信息。目标 仅作为准备内核源代码树的简单方法存在 建立外部模块。
vim .config
make modules_prepare
kconfig
提示,因为对.config
的更改可能会启用之前未手动配置的新选项。make M=net/sctp