Linux kernel 在Linux内核的Kconfig中添加编译时定义

Linux kernel 在Linux内核的Kconfig中添加编译时定义,linux-kernel,kbuild,Linux Kernel,Kbuild,我知道有一个选项可以将编译时宏/定义添加到Kconfig文件中,该文件可以在代码中使用 (例如,常数的某些定义,如#define)。Kconfig值作为Makefile define传递。此外,所有选定的Kconfig值都放在头文件中,并传递给汇编程序和“C”代码。因此,您不直接在Kconfig文件中执行此操作,但可以在Makefile或source中执行此操作 Kconfig 生成文件 来源 因此,Kconfig部分定义了用户界面信息。.config是makefile语法,由menuconfi

我知道有一个选项可以将编译时宏/定义添加到Kconfig文件中,该文件可以在代码中使用


(例如,常数的某些定义,如#define)。

Kconfig值作为Makefile define传递。此外,所有选定的Kconfig值都放在头文件中,并传递给汇编程序和“C”代码。因此,您不直接在Kconfig文件中执行此操作,但可以在Makefile或source中执行此操作

Kconfig 生成文件 来源 因此,Kconfig部分定义了用户界面信息。
.config
是makefile语法,由menuconfig等输出。这是在键入
make
时获得的。也就是说,menuconfig或其他工具选择的所有内容都可以在Makefiles中找到。Kconfig变量有一个CONFIG\uu

您可以选择生成文件部分来获得定义。如果要选择一个范围,则可以将
CONFIG\u MY\u DEFINE
的值传递给编译器。Ie,包括几乎任何内核头,都将包含config.h,“C”值
config\u MY\u DEFINE
将设置为用户在该范围内选择的任何值



有关更多信息,请参阅,它主要引用。

较新的内核有一个宏
。\if IS_ENABLED(CONFIG_MY_DEFINE)
,该宏将处理模块(或三个状态变量)。然而,它并不像一般定义那样相对,但使用它不会有什么坏处。
config MY_DEFINE
    bool "Select to get some DEFINE"
    default y
    help
      This is a config define that is sent to both make
      and defined in a config.h header.
ifeq ($(CONFIG_MY_DEFINE),y)
KBUILD_CFLAGS   += -DTHE_REAL_DEAL=1  # THE_REAL_DEAL now '1' in C files.
endif
#ifdef CONFIG_MY_DEFINE
#define THE_REAL_DEAL 1
#endif