Makefile 如何使内核模块二进制blob

Makefile 如何使内核模块二进制blob,makefile,linux-kernel,kernel,linux-device-driver,Makefile,Linux Kernel,Kernel,Linux Device Driver,我想为各种发行版分发专有的Linux模块,而无需为所有发行版预先构建模块。例如,我有以下文件: wrapp.c mod.c fops.c All 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上使用它们。模块构建时没有问题,但

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

wrapp.c
mod.c
fops.c
All 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_发货等的文章,但到目前为止我还不能让它工作。我错过了什么


尝试将mod/fops.o重命名为mod/fops.o_,但只要我理解这一点,它只与“清理”相关。…

不完全是我想要的。@NULL,您的任务有什么进展吗?我也很感兴趣-您找到解决方案了吗?