LINUX:静态链接模块的加载顺序

| 如果我有两个静态链接的模块。一个模块的module_init函数取决于已经运行的另一个模块的module_init函数。有没有一种方法可以强制一个模块先加载另一个模块? 另外,是否保证第一个模块的init函数在第二个模块被调用之前完成? 最后,如果上述回答为“否”,那么建议使用什么方法来同步两个模块的init调用,以确保我不会遇到问题?     
已邀请:
  有没有一种方法可以强制一个模块先加载另一个模块? 答案非常简单,请确保第一个模块在Makefile中位于第一个:
obj-y += mod1.o
obj-y += mod2.o
  确保第一个模块的init函数在第二个模块被调用之前完成? 是的,您的情况下的initcalls(“ 1”钩)称为一对一。参见
init/main.c
do_one_initcall()
来电者。     
我假设您要修复静态初始化失败 看一下 http://gcc.gnu.org/onlinedocs/gcc/C_002b_002b-Attributes.html(init_priority) __attribute __((constructor))到底如何工作? gcc / ld的-rdynamic链接器标志(这使您可以自由地进行编译时链接,并且仍然使用运行时加载器(dload)) 静态初始化顺序失败     

要回复问题请先登录注册