Я написал простой загружаемый модуль ядра. Создать файл символьного устройства в / dev / и соответствующий каталог классов. Следующие строки, которые я добавил в проект:
MODULE_DESCRIPTION("GSM driver");
MODULE_LICENSE("Dual BSD/GPL");
MODULE_AUTHOR("Guruprasad");
MODULE_DESCRIPTION("A simple driver");
MODULE_VERSION("0.1");
При сборке я получил следующее предупреждение
WARNING: modpost: missing MODULE_LICENSE() in /home/.../char_dev_gsm/GSM.o
При вставке я получил следующую ошибку:
insmod: ERROR: could not insert module GSM.ko: Unknown symbol in module
Пожалуйста, помогите мне с этим.
В проекте есть один основной файл (GSM.c) и включаемый файл (device.c и device.h)
Пожалуйста, получите файлы изследующая ссылка. https://github.com/guruprasad-92/Device-Driver
Я пытался добавить строку MODULE_LICENSE("Dual BSD/GPL");
в файл device.c, который также не выводит предупреждающих сообщений и сообщений об ошибках, но при вставке модуля он также не создает файл устройства /dev/gsm0
и не обновляя $dmesg
сообщениями, связанными с printk()
.
Я также попытался записать функции register_dev()
и unregister_dev()
в файл GSM.c, который не выдал никакого предупреждения, и создал устройство /dev/gsm0
и каталог классов в / sys / class/
Но я хочу знать, почему включение файла дает предупреждение при сборке.