首页 文章

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

提问于
浏览
3

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

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

1 回答

  • 4

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

    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.
    

    Makefile

    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 时,这是源 . 即,在makefile中可以使用menuconfig或其他工具选择的所有内容 . Kconfig 变量具有 CONFIG_ .

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


    有关更多信息,请参阅kbuild wiki,主要参考kernel's kbuild documentation .

相关问题