У меня есть два модуля ядра (например, 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 не определен
. LKM — это перемещаемый ELF, так почему же компилятор выдает это предупреждение? Как это можно убрать?