如何在构建内核模块时找出特定的内核宏值。
有很多宏选项,我希望知道在构建时分配给“特定宏”的值以及定义它的行号。
我不久前读过这篇文章......我知道这很有可能。
例如: 制作模块SUBDIRS = drivers / net / e1000 /
现在,在e1000中有一个使用的宏,HAVE_VLAN_IN_HW。
在构建模块时,我想知道它的确切位置(宏定义及其值)。?
答案 0 :(得分:0)
我应该使用更好的关键字来搜索它,例如预处理输出:
在这里您可以找到所有相关信息:
http://kernelnewbies.org/FAQ/KernelCrossCompilation
内核编译的另一个方面是它可以帮助您生成预处理文件。当您怀疑宏可能出现问题时,这非常有用。在2.4天内,我们可以获取命令行并添加-c选项并将gcc预处理器的结果重定向到文件。在2.6中,它内置于内核中。这是如何。
说,我想为kernel / dma.c生成预处理器输出, #make kernel / dma.i
完成。打开kernel / dma.i以查看预处理器对dma.c做了什么。
这也适用于模块(不是内核的一部分)。
答案 1 :(得分:0)
我们大多数人使用Linux cross reference来查找声明函数,宏和变量的位置。