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

Linux kernel 更改.config文件后需要构建整个内核吗?,linux-kernel,Linux Kernel,下面的脚本用于构建特定的内核模块 make modules M=net/sctp 再想一想,我发现有些选项没有打开,这是错误的 CONFIG_SCTP_DBG_OBJCNT=y 但是,在执行“make module”命令后,仍无法编译选项控件的文件。我需要制作整个内核才能让选项生效吗?一旦您制作了构建内核的命令,所有配置选项都将转换为宏并写入include/generated/autoconf.h文件 在此之后,当您更改任何配置选项时,您需要再次运行make命令,该命令将生成包含此新配置选项

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

make modules M=net/sctp
再想一想,我发现有些选项没有打开,这是错误的

CONFIG_SCTP_DBG_OBJCNT=y

但是,在执行“make module”命令后,仍无法编译选项控件的文件。我需要制作整个内核才能让选项生效吗?

一旦您制作了构建内核的命令,所有配置选项都将转换为宏并写入include/generated/autoconf.h文件

在此之后,当您更改任何配置选项时,您需要再次运行make命令,该命令将生成包含此新配置选项所需的文件。但是,如果在更改配置后仅使用命令“make M=/net/sctp modules”,则不会影响make中的功能。您可以做的不是构建整个内核,而是运行“makemodules”命令,该命令生成所需的文件,并使用您选择的选项构建您的模块。这是解决新配置选项是否存在任何依赖项的最佳方法

但是在您的情况下,如果您知道objcnt.c不依赖于任何其他东西,您可以更改sctp的make文件以包含您的文件

vim-net/sctp/Makefile

  sctp-y += objcnt.o

然后,您可以运行“make M=net/sctp modules”

所有配置选项将转换为宏,并在生成构建内核的命令后写入include/generated/autoconf.h文件

在此之后,当您更改任何配置选项时,您需要再次运行make命令,该命令将生成包含此新配置选项所需的文件。但是,如果在更改配置后仅使用命令“make M=/net/sctp modules”,则不会影响make中的功能。您可以做的不是构建整个内核,而是运行“makemodules”命令,该命令生成所需的文件,并使用您选择的选项构建您的模块。这是解决新配置选项是否存在任何依赖项的最佳方法

但是在您的情况下,如果您知道objcnt.c不依赖于任何其他东西,您可以更改sctp的make文件以包含您的文件

vim-net/sctp/Makefile

  sctp-y += objcnt.o
然后,您可以根据以下要求运行“make M=net/sctp modules”

要构建外部模块,必须有一个预构建的内核可用 包含生成中使用的配置和头文件的。 […]使用
make
目标
模块\u prepare
。这将 确保内核包含所需的信息。目标 仅作为准备内核源代码树的简单方法存在 构建外部模块

  • vim.config
  • make modules\u prepare
  • 回答任何
    kconfig
    提示,因为对
    .config
    的更改可能会启用以前未手动配置的新选项
  • make M=net/sctp
  • 根据:

    要构建外部模块,必须有一个预构建的内核可用 包含生成中使用的配置和头文件的。 […]使用
    make
    目标
    模块\u prepare
    。这将 确保内核包含所需的信息。目标 仅作为准备内核源代码树的简单方法存在 构建外部模块

  • vim.config
  • make modules\u prepare
  • 回答任何
    kconfig
    提示,因为对
    .config
    的更改可能会启用以前未手动配置的新选项
  • make M=net/sctp

  • 请注意,如果您自己编译内核,并传递一个
    LOCALVERSION
    (例如
    make-j8-deb-pkg LOCALVERSION=-local
    ),那么您还需要将它传递给
    make modules\u prepare LOCALVERSION=-local
    (以及
    make prepare
    ,如果您必须运行它)。或者您将得到一个
    modprobe:ERROR:无法插入'module_name':Exec格式错误
    。请注意,如果您自己编译内核,传递一个
    LOCALVERSION
    (例如
    make-j8-deb pkg LOCALVERSION=-local
    ),那么您还需要将其传递给
    make modules_-prepare LOCALVERSION=-local
    (如果必须运行该命令,请执行准备)。或者,您将得到一个
    modprobe:ERROR:无法插入'module_name':Exec格式错误