linux学习第一天 hello world

#include//包含有可装载模块需要的大量符号核函数的定义

#include//知道你个初始化和清除函数

MODUEL_LICENSE("Dual BSD/GPL);//指定代码所用的许可证

MODULE_AUTHOR("HELLOWORLD);//模块作者

MODULE_DESCRIPTION("hello world);//模块描述

MOUDLE_VERSION("v1.0);//模块版本

static int __init hello_init(void)//表示我们是在初始的时候用,因此用__init

{

printk("<0>" "hello world!\n");

return 0;

}

static void __exit hello_exit(void)

{

printk(KERN_ALERT "goodbye world!\n");

}

module_init(hello_init);

module_init(hello_exit);


Makefile的写法

obj-m:=hello.o

PWD:=$(shell pwd)

KERN_DIR:=/lib/module/$(shell uname -r)/build

all:

make -C $KERN_DIR SUBDIRS=$PWD modules

#       make -C $KERN_DIR M=`pwd` modules

clean:

-rm -fr *.o *.ko *.mod.o

进去之后如果消息没有显示在终端,那么我们用 tail -2 /var/log/message 查看后两行

添加模块  insmod hello.ko 

删除模块 rmmod hello  这里不用加.ko了

查看自己的模块   lsmod | grep hello.ko

makefile中的几个地方的解释,第一个是KERN_DIR:=/lib/module/$(shell uname -r)/build 这个表示我们找到我们的kernel 编译的makefile 

uname -r 是查看内核的版本 ,SUBDIRS 是makefile中带的参数,也可以用M替换,表示我们执行完makefile之后要调到这个参数指定的地方,modules指的是上面我们的obj-m这个模块,表示我们要生成的模块的依赖是hello.o  make -C表示进入某个目录里面去执行这个makefile


你可能感兴趣的:(Linux,helloworld,LINUX,驱动学习)