Bonjour,
Pour un kernel 2.6 (Mandriva 10.1), j'ai écrit le module minimum suivant
/* com_driver.c pour noyau 2.6 */
#include <linux/module.h>
#include <linux/kernel.h>
MODULE_DESCRIPTION("com driver k2.6" );
MODULE_AUTHOR("E.D." );
MODULE_LICENSE("BSD" );
int __init init_module (void)
{
printk( KERN_ALERT "Module com init\n" );
/* 0=OK other=KO */
return 0;
}
void __exit cleanup_module (void)
{
printk( KERN_ALERT "Module com exit\n" );
}
|
Le make file est nommé 'Makefile' (important, car 'makefile' n'est pas reconnu). Il contient une ligne :
La ligne de commande (script 'm') est
make -C /usr/src/linux SUBDIRS=$PWD modules
|
le lien '/usr/src/linux' pointe sur '/usr/src/linux-2.6.8.1-24mdk'
Le résultat de la compilation semble correct:
[edelahaye@localhost com]$ ./m
make: Entering directory `/usr/src/linux-2.6.8.1-24mdk'
CC [M] /home/edelahaye/c-dev/drv/com/com.o
Building modules, stage 2.
MODPOST
CC /home/edelahaye/c-dev/drv/com/com.mod.o
LD [M] /home/edelahaye/c-dev/drv/com/com.ko
make: Leaving directory `/usr/src/linux-2.6.8.1-24mdk'
[edelahaye@localhost com]$
|
Je passe ensuite en root pour charger le module .ko
edelahaye@localhost com]$ su
Password:
[root@localhost com]# dir
com.c com.ko com.mod.c com.mod.o com.o m Makefile
[root@localhost com]# insmod com.ko
insmod: error inserting 'com.ko': -1 Invalid module format
[root@localhost com]# exit
exit
[edelahaye@localhost com]$
|
Problème.
Le fichier var/log/messages indique:
<...>
May 19 09:29:23 localhost kernel: com: version magic '2.6.8.1-24mdk 686 gcc-3.4' should be '2.6.8.1-12mdk 686 gcc-3.4'
<...>
|
Il y aurait une légère incompatibilité de version...
Le binaire du noyau et les fichiers sources du kernel viennent des CD Mandrake 10.1 'Official'...
Comment résoudre ce problème ? Recompiler le noyau ?
Merci de m'avoir lu jusqu'au bout.
Emmanuel
Message édité par Emmanuel Delahaye le 04-06-2005 à 11:11:45
---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/