Bonsoir à tous.

J'essaye de créer un petit module linux (un simple Hello Kernel). Mais lors de la compilation j'obtiens des erreurs qui me rappellent des conflits d'inclusion.

Voici en gros mon code (recopié ici)

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
#include <linux/module.h>
#include <linux/init.h>
 
static int __init mon_module_init(void)
{
  printk(KERN_DEBUG "Hello World !\n");
  return 0;
}
 
static void __exit mon_module_cleanup(void)
{
  printk(KERN_DEBUG "Goodbye World!\n");
}
 
module_init(mon_module_init);
module_exit(mon_module_cleanup);

Ma ligne de compilation:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
gcc -D__KERNEL__ -I /usr/src/linux-headers-2.6.17-11-generic/include/ -DMODULE -Wall -O2 -c HelloKernel2.c -o HelloKernel.o
Et les erreurs que j'obtiens:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
malves@bonobo ~/Work/Drivers/HelloKernel $ gcc -D__KERNEL__ -I /usr/src/linux-headers-2.6.17-11-generic/include/ -DMODULE -Wall -O2 -c HelloKernel2.c -o HelloKernel.o
In file included from /usr/src/linux-headers-2.6.17-11-generic/include/asm/thread_info.h:16,
                 from /usr/src/linux-headers-2.6.17-11-generic/include/linux/thread_info.h:21,
                 from /usr/src/linux-headers-2.6.17-11-generic/include/linux/preempt.h:9,
                 from /usr/src/linux-headers-2.6.17-11-generic/include/linux/spinlock.h:49,
                 from /usr/src/linux-headers-2.6.17-11-generic/include/linux/capability.h:45,
                 from /usr/src/linux-headers-2.6.17-11-generic/include/linux/sched.h:44,
                 from /usr/src/linux-headers-2.6.17-11-generic/include/linux/module.h:9,
                 from HelloKernel2.c:10:
/usr/src/linux-headers-2.6.17-11-generic/include/asm/processor.h:76: error: ‘CONFIG_X86_L1_CACHE_SHIFT’ undeclared here (not in a function)
/usr/src/linux-headers-2.6.17-11-generic/include/asm/processor.h:76: error: requested alignment is not a constant
In file included from /usr/src/linux-headers-2.6.17-11-generic/include/linux/sched.h:49,
                 from /usr/src/linux-headers-2.6.17-11-generic/include/linux/module.h:9,
                 from HelloKernel2.c:10:
/usr/src/linux-headers-2.6.17-11-generic/include/linux/jiffies.h:33:3: error: #error You lose.
/usr/src/linux-headers-2.6.17-11-generic/include/linux/jiffies.h:210:31: error: division by zero in #if
/usr/src/linux-headers-2.6.17-11-generic/include/linux/jiffies.h:210:31: error: division by zero in #if
/usr/src/linux-headers-2.6.17-11-generic/include/linux/jiffies.h:210:31: error: division by zero in #if
[...]
Je ne sais pas trop d'ou cela peut venir étant donné que j'ai l'impréssion que ce sont des conflits d'inclusions dans les headers sur systemes. Je me trompe ?

Si quelqu'un à quelque chose à proposer je suis preneur