我有两个内核模块(称为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 未定义
。LKM 是可重定位的 ELF 文件,为什么编译器会发出这个警告?如何消除这个警告?