为pr_debug和printk设置CFLAGS

db4*_*b42 6 makefile printk printf-debugging

我想了解一个Linux内核模块,并希望看到的输出pr_debugprintk.我正在使用GNU Make.
我知道要获得pr_debug消息,我们必须使用DDEBUG.

那么,我该如何启用printk语句?

让我们说文件名是kvm.c.这两者有什么区别:

      CFLAGS_kvm.o := -DDEBUG
      CFLAGS_kvm.o += -DDEBUG
Run Code Online (Sandbox Code Playgroud)

这句话的作用是什么:

      CFLAGS_kvm.o := -I.
Run Code Online (Sandbox Code Playgroud)

[编辑]:
看起来我使用方括号引起了一些混乱.实际上通过[filename],我的意思是一些文件,比如kvm.c.

Jon*_*ler 1

我不知道如何激活printk()- 您用 Google 搜索了什么?除此之外,我发现似乎意味着printk()几乎总是可用(但您必须使用适当的级别标记消息,并且可能可以控制控制台上显示的级别)。

宏名称中的方括号是非正统的 - 因此可能是特定于您的系统的扩展。

从字里行间看,您很可能正在谈论 Linux 内核,因此也谈论 GNU Make,但如果您陈述这些内容,就会对每个人都有帮助。

:=符号是对变量的立即赋值。RHS 在读取和处理行时进行评估,而不是像通常情况那样在使用宏时进行评估。这意味着如果 RHS 上引用了宏,则随后对这些宏的更改不会影响该宏的值。考虑:

CFLAGS  = ${OFLAGS} ${IFLAGS} ${DFLAGS} ${WFLAGS}
CFLAGS := ${OFLAGS} ${IFLAGS} ${DFLAGS} ${WFLAGS}
Run Code Online (Sandbox Code Playgroud)

第一个变体指出 CFLAGS 将由 4 个命名宏组成(实际上,它只是复制该行以供以后扩展),但在(大概)在 C 编译命令中使用它之前不会扩展这些值。

第二种变体在读取该行时立即查找 4 个宏的值并将其展开。4 个引用宏的后续更改不会反映在 CFLAGS 中。

+=符号将 RHS 添加到宏中,而不是简单地替换它。