我有一个内核模块,我想用 , , 中的任何一个来构建make
,make debug
其中make test
每个模块之间的唯一区别是-D
编译器的一个选项。这与在 Linux 2.6 驱动程序模块 makefile 中创建调试目标本质上是相同的问题,但是在尝试了其他一些事情之后,这个问题被标记为已回答,我的问题仍然存在。
我已经EXTRA_CFLAGS
在我的 makefile 中尝试了不推荐使用的选项:
debug:
$(MAKE) -C $(KDIR) M=$(PWD) EXTRA_CFLAGS="-DDEBUG" modules
以及较新的ccflags-y
选项(即使在目标之外似乎也不起作用debug
):
ccflags-y := -DDEBUG
debug:
$(MAKE) -C $(KDIR) M=$(PWD) modules
并CFLAGS
在目标之前设置debug
:
debug: CFLAGS_main.o=-DDEBUG
debug:
$(MAKE) -C $(KDIR) M=$(PWD) modules
但我发现完成我想要的唯一方法是使用单独的构建脚本:
#!/bin/sh
case "$1" in
debug)
make CFLAGS_main.o=-DDEBUG
;;
*)
make
;;
esac
构建内核模块时有没有办法直接在makefile中执行此操作?