У меня есть два модуля ядра (скажем, modA и modB). modA экспортирует символ с EXPORT_SYMBOL(symA)
, а modB использует его. У меня есть заголовок modA.h
для modA:
...
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, так почему же компилятор выдает это предупреждение? Как это можно убрать?