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

时间:2016-03-24 08:48:26

标签: linux linux-kernel linux-device-driver

我修改我的模块Makefile,使kernel模块带有-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] ..

有任何帮助吗?非常感谢。

2 个答案:

答案 0 :(得分:0)

尝试通过.config文件启用它,即使是用于编译外部模块也可以从那里进行配置。 you can also refer from here您也可以从

启用它

make menuconfig>核心黑客>使用调试信息编译内核

some reference | some more reference | kernel doc regarding gdb | kernel reference for gdb

答案 1 :(得分:0)

致电make时,请将KCFLAGS=-ggdb3放在您使用的任何目标之前。例如,要使vmgglinux,模块和bzImage启用ggdb3符号,请运行make KCFLAGS=-ggdb3 all

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