假设有一个带有一些func_a函数的源文件a.c。我想根据一些特征定义调用func_a,也希望根据理想的相同特征定义将a.c包含在模块中。
因此,在我始终存在的模块源代码中(比如main.c),我可能会有这样的代码
#ifdef FEATURE_A
func_a();
#endif在模块的kbuild中,如下所示
obj-$(CONFIG_SAMPLE) += sample.o示例-objs := main.o utils.o
仅当定义了FEATURE_A时,才将a.c包含到示例模块中
???
但这可能没有意义,因为一个是预处理器指令,另一个是编译器/链接器/构建指令。也许预处理器指令使用由kbuild定义的某些标志的另一种方式更有意义?有什么方法可以做到这一点吗?
谢谢。
发布于 2012-07-06 05:08:10
请阅读3.7 Compilation flags。
据我所知,在编译时传递的Kconfig选项和预处理宏之间存在松散的关系。这是由内核开发人员定义在编译期间使用哪些预处理器标志。
例如在net/rds/Makefile中
ccflags-$(CONFIG_RDS_DEBUG) := -DDEBUG在这里,如果您的内核配置了Kconfig选项CONFIG_RDS_DEBUG,则将传递预处理器标志DEBUG。
https://stackoverflow.com/questions/11350255
复制相似问题