更改.config文件后需要构建整个内核吗?

时间:2013-11-30 12:35:05

标签: linux-kernel

以下脚本用于构建特定的内核模块。

make modules M=net/sctp

经过第二次思考,我发现有些选项没有打开,这是

CONFIG_SCTP_DBG_OBJCNT=y

但是,在“make module”命令之后仍未编译选项控件的文件。我是否需要制作整个内核以使该选项生效?

2 个答案:

答案 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。这将   确保内核包含所需的信息。目标   仅作为准备内核源代码树的简单方法存在   建立外部模块。

  1. vim .config
  2. make modules_prepare
  3. 回答任何kconfig提示,因为对.config的更改可能会启用之前未手动配置的新选项。
  4. make M=net/sctp