【求助】内核中使用EXPORT_SYMBOL,编译时调用模块提示undefined,请高手帮忙
mayo 2011-11-28 05:07:05 在kernel添加一个模块abc,这个模块直接编译到内核当中去,在xyz.c中调用此模块EXPORT的函数,编译时提示如下错误,编译停止:
abc.c和xyz.c在同一个目录下,其中abc先编译已经生成.o文件,xyz.c也生成.o文件,但在xyz.c编译成ko时出错
WARNING: "func_abc" [drivers/usb/test/xyz.ko] undefined!
WARNING: "func_xyz" [drivers/usb/test/xyz.ko] undefined!
WARNING: "set_abc" [drivers/usb/test/xyz.ko] undefined!
WARNING: "set_xyz" [drivers/usb/test/xyz.ko] undefined!
make[2]: *** [__modpost] Error 1
make[1]: *** [modules] Error 2
make[1]: Leaving directory `/home/xyz/kernel/2.6.21.5'
make: *** [kernelbuild] Error 2
看了很多材料,说这时候undefined不影响模块加载,但现在编译都不能通过。
请问高手,怎样才能忽略告警,让编译进行下去?
谢谢
另外:
这两个模块如果同时编译到内核或者同时编译成ko,都是可以正常编译完成,且按顺序insmod是没有问题的。
就是当abc编译进内核,让xyz模块编译成ko的时候,编译kernel都不能完成。
在编译出错后查看Module.sysvers文件里面找不到abc模块对应EXPORT_SYMBOL的函数,不知道是什么原因:(