Неопределенная ссылка на ipv6_dev_find при компиляции с помощью allmodconfig, отсутствует при компиляции с помощью allyesconfig

#linux-kernel

#linux-ядро

Вопрос:

Я пытаюсь изменить функцию icmp_echo во net/ipv4/icmp.c время запуска ветки Linux net-next в Ubuntu. Я много раз тестировал и компилировал файл, используя .config, созданный из моего локально установленного ядра, и у меня не было проблем. Я также тестировал компиляцию с помощью allyesconfig и не обнаружил ошибок. Однако при тестировании компиляции с помощью make allmodconfig я получаю сообщение об ошибке:

 ld: net/ipv4/icmp.o: in function `icmp_echo':
icmp.c:(.text 0x2613): undefined reference to `ipv6_dev_find'
make: *** [Makefile:1177: vmlinux] Error 1
 

Я понимаю, что allmodconfig компилирует гораздо больше модулей, чем allyesconfig и мой local .config, но почему он не может найти эту функцию? У него нет проблем с поиском ip_dev_find() или любой другой функции, которую я использую. Я включаю <net/addrconf.h> файл, который определяет ipv6_dev_find() , так что разве этого не должно быть достаточно, чтобы компилятор мог найти функцию? Что такого в allmodconfig, что вызывает такое поведение?

Я рассматривал такие вещи, как вызов extern net_device *ipv6_dev_find(struct net*, const struct in6_addr*, struct net_device*) в верхней части файла как один из методов явного вызова ipv6_dev_find функции, но я не смог найти ни одного примера в ядре, который использует этот подход, поэтому я чувствую, что это движется в неправильном направлении.