如何制作内核模块二进制blob

时间:2014-02-10 14:54:01

标签: makefile linux-kernel kernel linux-device-driver

我想为各种发行版分发专有的Linux模块,而无需为所有发行版预先构建模块。例如,我有以下文件:

wrapp.c
mod.c
fops.c

所有的wrapp.c都是我正在使用的所有内核函数的包装器:

unsigned int wrap_ioread8(void *addr)
{
    return ioread8(addr);
}

我想做的是给客户mod.o和fops.o + wrapp.c。

所以我在内核3.2上构建mod / fops.o然后尝试在内核2.6.32上使用它们。该模块构建没有问题但是当我尝试ioctl()到模块时,我得到“无效参数”。 ioctl接口在3.2和2.6.32之间没有变化!所以我无法理解错误。如果我从源代码构建模块,它可以毫无问题地工作。

我正在读关于二进制blob,o_shipped等等,但到目前为止,我无法使其工作。我错过了什么?

尝试将mod / fops.o重命名为mod / fops.o_shipped,但只要我理解这一点,它只与“make clean”有关......

0 个答案:

没有答案