无法编译内核模块

时间:2014-07-01 20:10:38

标签: linux-kernel

我正在尝试在编译内核映像时构建内核模块,方法是将配置符号值更改为“' m'”。但是我没有看到生成任何模块文件。如果我需要采取一些额外步骤来生成模块,请告诉我。如果我将标志更改为' y'代码工作正常。

此外,在线教程中,我见过以下两个

>insmod temp.ko

>insmod temp.o

哪个是动态可加载模块的正确类型?

4 个答案:

答案 0 :(得分:1)

  1. 要在Linux树中编译可加载的内核模块,请应用以下命令

    make modules

  2. .ko是正确的内核模块扩展。如果.o尝试使用insmod,则会显示Invalid module format错误。

答案 1 :(得分:1)

如果您的模块与其他模块有依赖关系,那么:

make modules构建模块

make modules_install安装它们

modprobe temp.ko加载临时模块及其依赖项

如果您的模块很简单且没有依赖关系,那么:

make modules构建模块

cd /path/to/module

insmod temp.ko

答案 2 :(得分:0)

未在make中使用模块目标。

答案 3 :(得分:0)

首先,运行make menuconfig,使用/搜索要构建的模块。接下来选择'm''y',具体取决于您希望将其编译为内核的一部分或将其构建为模块。

(如果你不想构建整个内核而只是构建一个模块): 接下来,在linux目录中(假设您使用的是vanilla内核)运行以下命令,这些命令将根据您的.config

生成脚本和所需的配置文件

make prepare

make scripts

现在只需使用:

构建模块

make M=<path/to/module/dir>

如果您选择m

,最后您应该在目录中有一个内核对象/模块(.ko)

希望这会有所帮助。