通过KBUILD_CFLAGS 来添加你需要的宏
如下test.c
#include <linux/init.h>
#include <linux/module.h>
MODULE_LICENSE("Dual BSD/GPL");
MODULE_AUTHOR("TEST");
int hello_init(void)
{
#ifdef TEST_T
printk(KERN_INFO "Hello World\n");
#else
printk(KERN_INFO "Hello World 1111\n");
#endif
return 0;
}
void hello_exit(void)
{
printk(KERN_INFO "Goodbye World\n");
}
module_init(hello_init);
module_exit(hello_exit);
对应的makefile如下:
KBUILD_CFLAGS+=-DTEST_T
ifneq ($(KERNELRELEASE),)
obj-m := test.o
else
KERN_DIR ?= /usr/src/linux-headers-$(shell uname -r)/
PWD := $(shell pwd)
default:
$(MAKE) -C $(KERN_DIR) M=$(PWD) modules
endif
clean:
rm -rf *.o *~ core .depend .*.cmd *.ko *.mod.c .tmp_versions
有KBUILD_CFLAGS这一句编译之后加载驱动输出 “hello world”,屏蔽掉KBUILD_CFLAGS这一句编译之后,加载驱动输出“hello world 1111”
![]()


本文介绍如何通过KBUILD_CFLAGS来定义预处理宏,从而控制Linux内核模块的编译行为。具体展示了如何根据宏的存在与否输出不同的字符串。
534

被折叠的 条评论
为什么被折叠?



