我有三个Linux内核模块(*.ko
个文件)。他们有这样的循环依赖:
mod1.ko
使用mod3.ko
mod2.ko
使用mod1.ko
mod3.ko
使用mod1.ko
和mod2.ko
由于“未知符号”错误,我无法加载第一个mod1.ko
文件。我也尝试了另外两种方法,但我得到了同样的错误:
一次加载所有模块
insmod mod1.ko mod2.ko mod3.ko
将这些文件放在/lib/modules/kernel_version/my_modules
中,然后运行
depmod kernel_version
modprobe mod3
任何人都可以帮助我!任何建议表示赞赏。在此先感谢:)
答案 0 :(得分:2)
那么,如何将这三个模块合并为一个?
答案 1 :(得分:0)
我遇到了同样的问题。 在我的案例中,合并模块不是一个好的解决方案。
我最后做的是添加使用回调函数而不是原始函数。并使用注册例程在其他模块中注册该函数(需要使用函数指针)。
这消除了模块之间的依赖关系。
然后,您可以先插入非依赖模块,然后再插入依赖模块。