Creation 于 2010-04-27 16:28:31发表:
我只想说,支持你
bbjyczy 于 2010-04-27 16:16:48发表:
insmod hello world driver C 文件 hello world.c #include #include #include 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); MAKEFILE文件 Makefile ifneq ($(KERNELRELEASE),) obj-m :=hello.o else KERNELDIR := /lib/modules/$(shell uname -r)/build PWD := $(shell pwd) default: $(MAKE) -C $(KERNELDIR) M=$(PWD) modules endif 注意$(MAKE)用TAB制造空格。 我花了很久才明白了 我的系统的LINUX内核,交叉编译的内核,交叉编译环境和系统上的GCC编译环境之间的关系。实际上是看了 KERNELDIR := /lib/modules/$(shell uname -r)/build 就明白了什么意思。 如果我选择交叉编译的话。就应该将这个KERNELDIR 设置为ARM的内核了吧。 这个问题困饶了我很多天。今天终于解决了。
hantu 于 2010-04-27 15:33:59发表:
再坚持,胜利不会远了。
Creation 于 2010-04-27 16:28:31发表:
我只想说,支持你
bbjyczy 于 2010-04-27 16:16:48发表:
insmod hello world driver
C 文件
hello world.c
#include
#include
#include
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);
MAKEFILE文件
Makefile
ifneq ($(KERNELRELEASE),)
obj-m :=hello.o
else
KERNELDIR := /lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)
default:
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules
endif
注意$(MAKE)用TAB制造空格。
我花了很久才明白了 我的系统的LINUX内核,交叉编译的内核,交叉编译环境和系统上的GCC编译环境之间的关系。实际上是看了
KERNELDIR := /lib/modules/$(shell uname -r)/build
就明白了什么意思。
如果我选择交叉编译的话。就应该将这个KERNELDIR 设置为ARM的内核了吧。
这个问题困饶了我很多天。今天终于解决了。
hantu 于 2010-04-27 15:33:59发表:
再坚持,胜利不会远了。