我有两个内核模块(例如modA和modB)。 modA导出带有EXPORT_SYMBOL(symA)
的符号,modB使用它。我有modA的头modA.h
:
...
extern void symA(int param);
...
并在
modB.c
中:#include "modA.h"
...
static int __init modB_init(void)
{
symA(10);
}
...
如果我
insmod
modB一切正常,则我的modB在内核中正确链接,并且正确调用了symA
函数。但是,当我构建modB时,编译器会发出警告:symA is undefined
。 LKM是可重定位的ELF,那么为什么编译器会发出此警告?如何将其删除? 最佳答案
http://www.kernel.org/doc/Documentation/kbuild/modules.txt中说明了此问题(以及在这种情况下如何正确编译)
关于linux - 警告构建使用导出符号的内核模块,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9499687/