为makefile / kconfig中的变量提供赋值

时间:2014-08-11 04:22:47

标签: c linux-kernel makefile linux-device-driver

我有一个unsigned long,需要获取一个特定于平台的变量。

我不希望使用启动参数,因为此驱动程序将进入产品,供应商不愿意更改启动参数。

我想知道这个变量是否可以从Makefile或Kconfig初始化。

我记得早在使用menuconfig设置它时,Kconfig中提供了早期printk的串口地址。但我从来不明白这是如何运作的。

2 个答案:

答案 0 :(得分:2)

您可以从程序文件的该目录中的Kconfig文件传递该值,
您可以将Kconfig设置为所需变量的值 例如,在Kconfig中,为变量添加以下配置

config  MY_VALUE_LONG          // config keyword
     hex "MY VALUE IS"         //What you see in the menuconfig
     default 0xAB123           //unsigned long value in hex

在上面的Kconfig中, MY_VALUE_LONG 会以十六进制格式保存长值, MY VALUE IS 是调用$ make menuconfig时显示的内容,以及使用默认变量设置的默认值将传递给程序。

在Program(需要变量值)中,使用配置变量 CONFIG_MY_VALUE_LONG 以十六进制获取值

例如,

  

无符号长值= CONFIG_MY_VALUE_LONG

答案 1 :(得分:1)

在下面找到C文件和Makefile实现以满足您的要求

foo.c的

 main ()
    {
        int a = MAKE_DEFINE;
        printf ("MAKE_DEFINE value:%d\n", a);
    }

生成文件

all:
    gcc -DMAKE_DEFINE=11 foo.c

MAKE_DEFINE是一个定义,通过Makefile

启用