gpt4 book ai didi

c - kbuild 外部模块问题

转载 作者:太空宇宙 更新时间:2023-11-04 12:14:04 25 4
gpt4 key购买 nike

我正在为设备驱动程序构建树外内核模块。总的来说,一切进展顺利,但我有几个关于使用 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)。

在此先感谢您的帮助。

最佳答案

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

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

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

关于c - kbuild 外部模块问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47932420/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com