LDD3: Hello World

昨天游戏机弄好了,内核也编译安装完毕。接下来可以写第一个驱动了。(不会编译安装内核?)

hello.c

#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);


Makefile

KERN_DIR = /home/hongjincao/work/linux-2.6.32.63/
  
all:  
	make -C $(KERN_DIR) M=`pwd` modules  
  
clean:  
	make -C $(KERN_DIR) M=`pwd` modules clean  
	rm -rf modules.order  
  
install:  
	cp *.ko /nfs/busybox/fs_mini2440  
  

obj-m := hello.o

注:

KERN_DIR 要设置成正确的内核源码路径

install: 对应的命令是将驱动模块复制到一个文件系统,这个文件系统被我的mini2440以网络文件系统的方式挂载。 所以可以忽略此句。


测试:

$ sudo insmod hello.ko

(如果没有任何输出,说明日志级别较低,把hello.c 中的 KERN_ALERT改成 KERN_EMERG即可。解释见这里)


参考:

ldd3


代码已经在我的github上: https://github.com/huntinux/ldd/tree/master/helloworld

你可能感兴趣的:(helloworld,ldd)