如何使用-ggdb标志编译linux内核模块

如何使用-ggdb标志编译linux内核模块,linux,linux-kernel,linux-device-driver,Linux,Linux Kernel,Linux Device Driver,我修改我的模块Makefile,使之成为带有-ggdb标志的内核模块 KERNROOT := /lib/modules/$(shell uname -r)/build ccflags-y += -ggdb3 #ccflags-y += -g test: $(MAKE) $(ccflags-y) -C $(KERNROOT) M=$(shell pwd) 但它不起作用。失败消息: make: invalid option -- 'g' make: invalid opt

我修改我的模块Makefile,使之成为带有
-ggdb
标志的
内核
模块

KERNROOT := /lib/modules/$(shell uname -r)/build

ccflags-y += -ggdb3

#ccflags-y += -g

test:

        $(MAKE) $(ccflags-y) -C $(KERNROOT) M=$(shell pwd)
但它不起作用。失败消息:

make: invalid option -- 'g'

make: invalid option -- 'g'

make: invalid option -- '3'

Usage: make [options] [target] ..


有什么帮助吗?非常感谢。

请尝试通过.config文件启用它,即使编译外部模块,也会从中获取配置。您还可以从中启用它

让menuconfig>kernelhacking>compilekernelwithdebug-info


| | |

调用make时,将
kcsflags=-ggdb3
放在正在使用的任何目标之前。例如,要使vmlinux、modules和bzImage启用ggdb3符号,请运行
makeKCFlags=-ggdb3all


请注意,这与另一个答案中描述的仅启用内核调试符号不同。-ggdb3标志向默认情况下未包含的符号文件添加附加信息(例如宏定义)。

make CONFIG\u DEBUG\u INFO=y