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

时间:2013-11-11 20:36:43

标签: linux-kernel kbuild

我知道可以选择将编译时宏/定义添加到可在代码中使用的Kconfig文件中。

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

1 个答案:

答案 0 :(得分:4)

Kconfig值以Makefile定义的方式传递。此外,所有选定的Kconfig值都放在头文件中并传递给汇编程序并且' C'码。因此,您不能直接在Kconfig文件中执行此操作,但可以在Makefile或source中执行此操作。

的Kconfig

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

因此, Kconfig 部分定义了用户界面信息。 .config是makefile语法,由 menuconfig 等输出。这是在您键入make时获取的。即, menuconfig 或其他工具选择的所有内容在Makefile中都可用。 Kconfig 变量有一个 CONFIG _

您可以选择 Makefile 来源部分来获取您的定义。如果要选择范围,则可以将CONFIG_MY_DEFINE的值传递给编译器。即,几乎所有内核头文件都包含 config.h 和' C'值CONFIG_MY_DEFINE将设置为用户在范围内选择的任何内容。


有关详情,请参阅kbuild wiki,主要参考kernel's kbuild documentation