jotik
jotik

Reputation: 17900

How to pass compiler options during Linux kernel compilation?

For reasons, I need to compile the Linux kernel (currently 4.7.10) passing some simple and innocent additional command line options (e.g. -pipe -Wsomething etc) to the C compiler.

How do I do it?

More specifically, how do I enforce these compiler flags during plain make as well as during make menuconfig and similar, i.e. so that they are always passed to the C compiler whenever the latter is executed.

Upvotes: 12

Views: 13630

Answers (2)

Coiby
Coiby

Reputation: 555

Kbuild — The Linux Kernel documentation provides a list of options,

  • KCPPFLAGS

    Additional options to pass when preprocessing. The preprocessing options will be used in all cases where kbuild does preprocessing including building C files and assembler files.

  • KAFLAGS

    Additional options to the assembler (for built-in and modules).

  • AFLAGS_MODULE

    Additional assembler options for modules.

  • AFLAGS_KERNEL

    Additional assembler options for built-in.

  • KCFLAGS

    Additional options to the C compiler (for built-in and modules).

  • CFLAGS_KERNEL

    Additional options for $(CC) when used to compile code that is compiled as built-in.

  • CFLAGS_MODULE

    Additional module specific options to use for $(CC).

  • LDFLAGS_MODULE

    Additional options used for $(LD) when linking modules.

  • HOSTCFLAGS

    Additional flags to be passed to $(HOSTCC) when building host programs

Upvotes: 7

Tsyvarev
Tsyvarev

Reputation: 65996

From Linux kernel's makefile:

# Add any arch overrides and user supplied CPPFLAGS, AFLAGS and CFLAGS as the
# last assignments
KBUILD_CPPFLAGS += $(ARCH_CPPFLAGS) $(KCPPFLAGS)
KBUILD_AFLAGS   += $(ARCH_AFLAGS)   $(KAFLAGS)
KBUILD_CFLAGS   += $(ARCH_CFLAGS)   $(KCFLAGS)

So, passing additional options for Kbuild uses usual environment/makefile variables but with K prefix:

make "KCFLAGS=-pipe -Wsomething"

Upvotes: 16

Related Questions