kbuild外部模块问题

问题描述 投票:0回答:1

我正在为设备驱动程序构建一个树外的内核模块。总的来说,事情进展顺利,但我有一些关于使用kbuild和构建系统的问题:

  1. 我找到了这篇优秀文章:Is it possible to set CFLAGS to a linux kernel module Makefile?,它展示了如何修改编译器标志。因此,我现在将我的编译器标志设置为:ccflags-y := -O2 -Wall -Wextra -I $(DRIVER_INC_DIR),其中$(DRIVER_INC_DIR)是我的驱动程序的各种头文件。请注意,我的驱动程序由几个.o文件组成,这些文件合并为单个.ko文件。我想显示编译器为我自己的代码生成的警告,而不是Linux中的代码(例如linux / module.h)。我怎么能做到这一点?我知道在用户空间应用程序中有-isystem选项,但我想知道这将如何适用于此(如果有的话)。
  2. 使用modules_install与仅编译.ko文件的副本之间有什么区别吗?我问的原因是因为我认为我更容易遵循手动复制,因为我还需要支持“make uninstall”目标(并且没有modules_uninstall,只是一个clean,它似乎没有删除。 ko从哪里安装)。

在此先感谢您的帮助。

c linux makefile kbuild
1个回答
0
投票

我已经能够回答#1了。基本上,在kbuild内部,LINUXINCLUDE变量使用-I从Linux头文件中提取所有源代码。结果,我将这一行添加到我的Makefile中:

LINUXINCLUDE := $(subst -I, -isystem, $(LINUXINCLUDE))

这将用-I替换所有-isystem标志,因此,警告将被忽略。

© www.soinside.com 2019 - 2024. All rights reserved.