我很擅长构建和理解内核KLM的内容,请您澄清以下问题?
假设我们有一个自定义KLM模块cust.ko,它是使用下面的build inline命令(makefile)构建的out-side-tree对一个内核(dir),它包含8个KLM模块(构建在内核源代码树中)< / p>
$(MAKE) ARCH=$(ARCH) CROSS_COMPILE=$(CROSS_COMPILER) -C $(KERNELDIR) M=$(PWD) modules
问题:
如果我们重新编译内核并引入了3个新的KLM模块(来自menuconfig),我们是否还需要重新编译cust.ko以在这个新重建的内核之上成功加载它?如果有,背后的任何具体技术原因?
是否因为在编译内核时加载/初始化地址是硬编码的(以某种方式计算)?
先谢谢。
答案 0 :(得分:0)
我重新编译了自定义KLM模块,事情开始按预期工作。所以,我依赖于测试结果,我相信如果任何KLM是在树外构建的,需要重新编译,因为任何新KLM被添加到KLM并且必须KLM需要在新建的KLM上重新初始化。
谢谢!