Qylin
Qylin

Reputation: 1591

Need to build the whole kernel after changing the .config file?

The following script is used to build a specific kernel module.

make modules M=net/sctp

After a second thinking, I've figured out that some of the options were not opened, which is

CONFIG_SCTP_DBG_OBJCNT=y

However, the file that the option control was still not compiled after a "make module" command. Do I need to make the whole kernel to let the option take effects?

Upvotes: 2

Views: 3862

Answers (2)

Lucas
Lucas

Reputation: 661

According to https://www.kernel.org/doc/Documentation/kbuild/modules.txt:

To build external modules, you must have a prebuilt kernel available that contains the configuration and header files used in the build. [..] use the make target modules_prepare. This will make sure the kernel contains the information required. The target exists solely as a simple way to prepare a kernel source tree for building external modules.

  1. vim .config
  2. make modules_prepare
  3. Answer any kconfig prompts as changes to .config may enable new options that were not manually configured previously.
  4. make M=net/sctp

Upvotes: 2

knare
knare

Reputation: 264

All configuration options will be converted into macros and will be written to the file include/generated/autoconf.h once you did make command to build the kernel.

After this when you change any of the configuration option you again need to run the make command which generates required files to include this new configuration options. But if you just use the command "make M=/net/sctp modules" after you change your configuration it will not affect in the make. Instead of building whole kernel what you can do is, just run the "make modules" command which generates the required files and builds your module with the options that you selected. This is the best way which also resolves if there are any dependencies on your newly configured option.

But in your case, if you know that objcnt.c doesn't depend on any other things you can change the make file of the sctp to include your file.

vim net/sctp/Makefile

  sctp-y += objcnt.o

Then you can run the "make M=net/sctp modules"

Upvotes: 2

Related Questions