C 使用.o文件构建.ko文件

C 使用.o文件构建.ko文件,c,makefile,linux-kernel,kernel,kernel-module,C,Makefile,Linux Kernel,Kernel,Kernel Module,我知道我们可以使用一个源.c文件生成一个.ko文件,后面的makefile如下所示。现在,我想创建一个相同类型的.ko文件,而不公开源代码。所以我计划使用.o对象文件来实现它。但是我没有找到正确的路径,如何根据这个要求修改Makefile obj-m += somesource.o all: make -C $(KERNEL_SRC) M=$(PWD) modules clean: make -C $(KERNEL_SRC) M=$(PWD) clean 据我所知,一个

我知道我们可以使用一个源.c文件生成一个.ko文件,后面的makefile如下所示。现在,我想创建一个相同类型的.ko文件,而不公开源代码。所以我计划使用.o对象文件来实现它。但是我没有找到正确的路径,如何根据这个要求修改Makefile

obj-m += somesource.o

all:
    make -C $(KERNEL_SRC) M=$(PWD) modules 


clean:
    make -C $(KERNEL_SRC) M=$(PWD) clean

据我所知,一个无法从另一台机器上创建的对象文件构建内核模块。唯一的例外是附带的文件,这些文件可能包含代码,但不能提供任何符号(变量或函数)

我想这是一种保护,防止在一个内核中定义的函数和/或类型在具有不兼容的函数签名或类型布局的不同内核中使用


如果您不想公开源代码,请在您的计算机上构建完整的内核模块并分发它。

感谢您的响应,没有这个我就没有其他方法了?例如,.c文件转换为.o文件,.mod.o文件是从内核源代码的.mod.c文件生成的。这两个对象文件是动态链接的。如果我没记错的话,我们能在这两个可用的目标文件之间破解这个过程吗?很可能你会破解这个过程,但我不知道如何破解。内核构建过程及其makefile结构实际上是复杂的。