Zrodlo modulu jest nastepujace:
Modul sie kompiluje. Gdy probuje zaladowac go do kernela dostaje komunikat:#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/kd.h>
// ------------------------------------------------------
#define lic "GPL"
#define auth "TW"
#define desc "Test Module"
#define dev "dummy"
// ------------------------------------------------------
MODULE_LICENSE(lic);
MODULE_AUTHOR(auth);
MODULE_DESCRIPTION(desc);
MODULE_SUPPORTED_DEVICE(dev);
// ------------------------------------------------------
static int __init kb_init(void)
{
printk(KERN_ALERT "Hello\n");
return 0;
}
// ------------------------------------------------------
static void __exit kb_exit(void)
{
printk(KERN_ALERT "Bye\n");
return;
}
// ------------------------------------------------------
module_init(kb_init);
module_exit(kb_exit);
// ------------------------------------------------------
dmesg:tomasz@athena:~/Programowanie/Testy/k_mody$ sudo insmod kb.ko
insmod: error inserting 'kb.ko': -1 Invalid module format
Zastanawiam sie o co chodzi? Jestem w 100% pewny, ze skompilowal sie z obecnie uzywana wersja jadra. Sam ten kernel kompilowalem a w katalogu /usr/src mam tylko jedne zrodla linuxa.[ 4215.463669] kb: disagrees about version of symbol struct_module
Ma ktos jakis pomysl ? Moze jakis naglowek specyficzny jest potrzebny?