我正在为设备驱动程序构建一个树外的内核模块。总的来说,事情进展顺利,但我有一些关于使用kbuild和构建系统的问题:
ccflags-y := -O2 -Wall -Wextra -I $(DRIVER_INC_DIR)
,其中$(DRIVER_INC_DIR)
是我的驱动程序的各种头文件。请注意,我的驱动程序由几个.o文件组成,这些文件合并为单个.ko文件。我想显示编译器为我自己的代码生成的警告,而不是Linux中的代码(例如linux / module.h)。我怎么能做到这一点?我知道在用户空间应用程序中有-isystem
选项,但我想知道这将如何适用于此(如果有的话)。modules_install
与仅编译.ko文件的副本之间有什么区别吗?我问的原因是因为我认为我更容易遵循手动复制,因为我还需要支持“make uninstall”目标(并且没有modules_uninstall
,只是一个clean
,它似乎没有删除。 ko从哪里安装)。在此先感谢您的帮助。
我已经能够回答#1了。基本上,在kbuild内部,LINUXINCLUDE
变量使用-I
从Linux头文件中提取所有源代码。结果,我将这一行添加到我的Makefile中:
LINUXINCLUDE := $(subst -I, -isystem, $(LINUXINCLUDE))
这将用-I
替换所有-isystem
标志,因此,警告将被忽略。