C 内核';编译新模块时的顶级Makefile?

C 内核';编译新模块时的顶级Makefile?,c,makefile,linux-kernel,kernel,kernel-module,C,Makefile,Linux Kernel,Kernel,Kernel Module,为了创建新的内核模块,我们需要使用内核的顶级Makefile,如下所示: make -C /lib/modules/$(shell uname -r)/build M=`pwd` -C指定顶级生成文件的路径 我的问题是,在创建新模块时,这个Makefile需要什么?当我的makefile应该足以满足此要求时…当内核模块使用与用户空间程序相同的编译器(gcc)编译时,需要将许多特殊参数传递给编译器以创建模块。此外,其中一些参数取决于内核,您可以根据内核构建模块 是的,您可以创建Makefile,

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

make -C /lib/modules/$(shell uname -r)/build M=`pwd`
-C
指定顶级生成文件的路径


我的问题是,在创建新模块时,这个Makefile需要什么?当我的makefile应该足以满足此要求时…

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

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

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


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


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

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

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

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


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

例如,需要预处理
Modules.symvers
文件以提取模块中使用的内核核心函数的信息。没有这个步骤,创建的模块就不能插入内核