1

我正在使用 buildroot 创建一个 Linux 内核模块来执行交叉编译。我创建了一个 Config.in 文件来创建一些可选位,如下所示:

config BR2_PACKAGE_MYPACKAGE_OPTION1
    bool "Option 1"

在我的源代码中,我将拥有:

#ifdef CONFIG_BR2_PACKAGE_MYPACKAGE_OPTION1
#error Testing if symbol defined 
#endif

这不起作用,从 menuconfig 检查选项时,编译时未定义符号。该符号确实出现在顶级 .config 文件中。

我猜想 mypackage.mk 将有权访问该符号,并且确实如此。我尝试将这些添加到 .mk 文件中,但尽管 TARGET_CFLAGS 和 EXTRA_CFLAGS 都被语句更改(通过 @echo 命令确认),但它们不会传递给编译器。

ifeq ($(BR2_PACKAGE_MYPACKAGE_OPTION1),y)
    TARGET_CFLAGS += -DCONFIG_BR2_PACKAGE_MYPACKAGE_OPTION1
endif

ifeq ($(BR2_PACKAGE_MYPACKAGE_OPTION1),y)
    EXTRA_CFLAGS += -DCONFIG_BR2_PACKAGE_MYPACKAGE_OPTION1
endif

如何访问源代码中的配置符号?

4

1 回答 1

0

我想出了一个可能的答案:

将你感兴趣的传递给 mypackage.mk 文件中的 $(MAKE) 调用,然后你可以将它们传递给你的包 Makefile/Kbuild 文件中的编译器。

于 2012-11-07T15:16:01.287 回答