Сборка модуля ядра [получение неопределенных ссылок при линковке]
Я пытаюсь скомпилировать модуль, который использует вызовы 8021q. У меня установлен 8021q с make-файлом и kconfig в / lib / modules / [версия] / build / net / 8021q. Однако, когда я пытаюсь построить, я получаю следующее:
WARNING: "register_vlan_dev" [/home/user/test/test.ko] undefined!
Я новичок в создании модулей, так как мне сделать эту функцию видимой для моего модуля?
Мой блок кода (полный ошибок, но только в качестве примера):
int create_and_register(struct gfast_dfe_entry *dfe,
uint16_t port_on_dfe, uint16_t tag)
{
int ret = -ENODEV;
uint16_t portidx = (uint16_t)(0);
static char port_ifname[IFNAMSIZ] = "eth0";
static struct net_device *ports[10];
ports[portidx] = alloc_netdev(privsize, port_ifname, NULL);
if ((ret = register_vlan_dev(ports[portidx])) != 0) {
PWARN("cannot create port%d - register_vlan_dev returned err=%d",
portidx, ret);
rtnl_unlock();
goto err_reg_vlandev;
}
return 0;
err_reg_vlandev:
free_netdev(ports[portidx]);
ports[portidx] = NULL;
return 1;
}
Мой make-файл:
obj-m += test.o
test-objs := main.o
KERNELPATH:=/lib/modules/$(shell uname -r)/build
all: modules
modules:
make -C $(KERNELPATH) M=$(shell pwd) -Wall modules
clean:
make -C $(KERNELPATH) M=$(shell pwd) clean
Спасибо за помощь!