【问题标题】:kbuild external module questionskbuild 外部模块问题
【发布时间】:2018-06-04 13:42:30
【问题描述】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-12-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-18
      • 2014-12-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多