У меня есть LKM с именем RtmNetlinkLKM.c
, который компилируется и работает нормально. В тот момент, когда я обновляю его Makefile для компиляции с другими файлами sr c, он начинает выдавать предупреждение:
WARNING: modpost: missing MODULE_LICENSE()
Следующее MODULE_LICENSE("GPL");
уже присутствует в файле модуля ядра.
Предыдущий Makefile, модуль прекрасно компилируется
obj-m += RtmNetlinkLKM.o
all:
make -C /lib/modules/`uname -r`/build M=$(PWD) modules
clean:
make -C /lib/modules/`uname -r`/build M=$(PWD) clean
обновленный Makefile, модуль теперь компилируется с предупреждением
obj-m += RtmNetlinkLKM.o
RtmNetlinkLKM-objs += rt_kern.o gluethread/glthread.o << Added two more sources
all:
make -C /lib/modules/`uname -r`/build M=$(PWD) modules
clean:
make -C /lib/modules/`uname -r`/build M=$(PWD) clean
rm -f rt_kern.o
rm -f gluethread/glthread.o
При компиляции с использованием второго Makefile, это дает заявленное предупреждение. Когда я добавляю MODULE_LICENSE("GPL")
в gluethread/glthread.c
, предупреждение исчезает. Я не понимаю, зачем мне добавлять лицензию «GPL» в glthread.c
, когда это не модуль, а содержит функции, которые будут использоваться модулем (это мини-библиотека со связанным списком). Почему он не жалуется другим sr c файлом rt_kern.c
аналогичным образом. Я никогда не делал никаких изменений в исходном файле модуля RtmNetlink.c
на протяжении всего этого процесса.