【问题标题】:What is the role of kernel's top level Makefile while compiling a new module?编译新模块时内核的顶级 Makefile 的作用是什么?
【发布时间】:2017-10-12 12:01:39
【问题描述】:

为了创建一个新的内核模块,我们需要使用内核的顶级 Makefile 作为:

make -C /lib/modules/$(shell uname -r)/build M=`pwd`

-C 指定顶级 Makefile 的路径。

我的问题是在创建新模块时需要这个 Makefile 是什么?当我的 makefile 应该足够了...

【问题讨论】:

    标签: c makefile linux-kernel kernel kernel-module


    【解决方案1】:

    虽然内核模块使用与用户空间程序相同的编译器 (gcc) 进行编译,但需要将 许多特殊参数 传递给编译器以创建模块。此外,其中一些参数取决于构建模块的内核。

    是的,您可以创建 Makefile,它将适当的参数传递给编译器并创建一个模块。

    但是,使用关心这些参数的现有内核的 Makefile 要简单得多。在这种情况下,您的 makefile 只需要提供您希望编译到模块中的源文件。


    另外,构建内核模块不仅仅是一个编译它。除了调用编译器之外,还应采取一些额外的措施来准备模块。

    例如,需要预处理Modules.symvers 文件以提取模块中使用的内核核心函数的信息。如果没有这一步,创建的模块将无法插入内核。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多