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格式错误
。