Ik ben het boek "Linux Device drivers" van O'Reilly aan het doornemen om m'n eerste eigen linux driver te kunnen maken.
In het boek staat een beetje code van een Hello_world-driver.
Nou moet ik de code bouwen en een .mod.o en een .ko file krijgen, maar dat lukt me niet.
als ik gewoon gcc aanroep krijg ik dit:
ook met dit commando krijg ik zo goed als dezelfde meldingen:
rode@rode-laptop:~/Desktop/drivers/Hello world$ gcc -DMODULE -D__KERNEL__ -O6 -c Hello.c
en van een andere site had ik dit commando gevist, maar ook dat werkte net:
wat doe ik fout??
PS: de code is:
In het boek staat een beetje code van een Hello_world-driver.
Nou moet ik de code bouwen en een .mod.o en een .ko file krijgen, maar dat lukt me niet.
als ik gewoon gcc aanroep krijg ik dit:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| rode@rode-laptop:~/Desktop/drivers/Hello world$ gcc ./Hello.c ./Hello.c:1:24: error: linux/init.h: No such file or directory ./Hello.c:2:26: error: linux/module.h: No such file or directory ./Hello.c:3: error: expected declaration specifiers or ‘...’ before string constant ./Hello.c:3: warning: data definition has no type or storage class ./Hello.c: In function ‘hello_init’: ./Hello.c:7: error: ‘KERN_ALERT’ undeclared (first use in this function) ./Hello.c:7: error: (Each undeclared identifier is reported only once ./Hello.c:7: error: for each function it appears in.) ./Hello.c:7: error: expected ‘)’ before string constant ./Hello.c: In function ‘hello_exit’: ./Hello.c:13: error: ‘KERN_ALERT’ undeclared (first use in this function) ./Hello.c:13: error: expected ‘)’ before string constant ./Hello.c: At top level: ./Hello.c:16: warning: data definition has no type or storage class ./Hello.c:16: warning: parameter names (without types) in function declaration ./Hello.c:17: warning: data definition has no type or storage class ./Hello.c:17: warning: parameter names (without types) in function declaration |
ook met dit commando krijg ik zo goed als dezelfde meldingen:
rode@rode-laptop:~/Desktop/drivers/Hello world$ gcc -DMODULE -D__KERNEL__ -O6 -c Hello.c
en van een andere site had ik dit commando gevist, maar ook dat werkte net:
code:
1
2
3
4
5
| rode@rode-laptop:~/Desktop/drivers/Hello world$ make -C /usr/src/linux-headers-2.6.29.3-rode/ SUBDIRS=$PWD Hello.c make: Entering directory `/usr/src/linux-headers-2.6.29.3-rode' /usr/src/linux-headers-2.6.29.3-rode/arch/x86/Makefile:41: /usr/src/linux-headers-2.6.29.3-rode/arch/x86/Makefile_32.cpu: No such file or directory make: *** No rule to make target `/usr/src/linux-headers-2.6.29.3-rode/arch/x86/Makefile_32.cpu'. Stop. make: Leaving directory `/usr/src/linux-headers-2.6.29.3-rode' |
wat doe ik fout??
PS: de code is:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| #include <linux/init.h> #include <linux/module.h> MODULE_License("Dual BSD/GPL"); static int hello_init(void) { printk(KERN_ALERT "Hello world\n"); return 0; } static void hello_exit(void) { printk(KERN_ALERT "Goodbye, cruel world\n"); } module_init(hello_init); module_exit(hello_exit); |
Klus page: http://klusthuis.blogspot.com