我想为各种发行版分发专有的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”有关......