2011-03-30 67 views
2

我有三个Linux内核模块(*.ko文件)。他们有循环依赖这样的:插入具有循环依赖关系的模块(* .ko)

  • mod1.komod1.ko出口mod1.ko
  • mod3.ko使用函数和mod2.ko

我不能加载第一个使用由mod3.ko

  • mod2.ko使用导出函数导出的函数mod1.ko文件因为“未知符号”错误。我也尝试过其他两种方法,但我得到了同样的错误:

    • 负荷将这些文件放入/lib/modules/kernel_version/my_modules时间

      insmod mod1.ko mod2.ko mod3.ko 
      
    • 所有模块,并运行

      depmod kernel_version 
      modprobe mod3 
      

    任何人都可以帮助我!任何建议表示赞赏。在此先感谢:)

  • 回答

    1

    那么,如何将这三个模块合并成一个?

    0

    我遇到了同样的问题。 在我的情况下,合并模块并不是一个好的解决方案。

    我偶然做的是添加使用回调函数,而不是原始函数。并使用注册例程注册其他模块中的函数(需要使用函数指针)。

    这消除了模块之间的依赖关系。

    然后,您可以先插入非依赖模块,然后插入依赖模块。