//------------------------------测试源码---------------------------------------
#include
#include
#include
#include
int main (void)
{
int fd;
// char buff[]="Ta ti ta ti";
char buff[200];
int i;
for(i=200; i > 0; i--) {
if(i < 128){
buff[i]=i;
}
else {
buff[i] = '2';
}
}
printf("test.c:\n %s\n\n", buff);
fd = open ("/dev/caogos_hello",O_RDWR);
if (fd < 0) {
printf ("fd open failed\n");
exit(0);
}
printf ("\n/dev/hello opened, fd=%d\n",fd);
printf ("Write returns %d\n", write (fd, buff, sizeof(buff)));
close (fd);
printf ("/dev/hello closed :)\n");
return 0;
}
//-----------------------------------Makefile---------------------------------------
KERNELDIR ?= /source/kernel/linux-2.6.22.6-worked
PWD := $(shell pwd)
obj-m += hello.o
modules:
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules
clean:
rm -rf *.o *~ core .depend .*.cmd *.ko *.mod.c .tmp_versions
这里驱动模块的makefile和应用程序的makefile有些不同,这里只需要指定(用于嵌入式的)linux内核的路径,并将这个路径赋给变量KERNELDIR;然后make自动会调用交叉编译器(比如arm-linux-gcc)来编译驱动模块(比如这里是hello.c)。