我有两个内核模块(例如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/

10-11 16:49