编译新模块时内核顶级Makefile的作用是什么?

时间:2017-05-13 06:40:05

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

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

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

-C指定顶级Makefile的路径。

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

1 个答案:

答案 0 :(得分:2)

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

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

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

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

,例如,需要preropcess Modules.symvers文件来获取模块中使用的内核核心功能的提取信息。如果没有该步骤,则无法将创建的模块插入到内核中。