您的位置:首页 > 运维架构 > Linux

linux kernel 模块化编程入门

2016-04-09 20:48 561 查看
相信hello world是所有编程语言的demo吧,linux kernel也不例外,昨天搜集了相关资料,终于完成linux 模块化编程的hello world!特此写下这个博客,记录下步骤。

编写hello world程序

#include <linux/module.h>   // Needed by all modules
#include <linux/kernel.h>   // Needed for KERN_ALERT
#include <linux/init.h>     // Needed for the macros

static int hello_init(void)
{
printk(KERN_ALERT "Hello, world \n");
return 0;
}

static void hello_exit(void)
{
printk(KERN_ALERT "Goodbye, world \n");
}

module_init(hello_init);
module_exit(hello_exit);


编写Makefile文件

obj-m += hello.o

all:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules

clean:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean


此刻,当前目录下文件为:



make


此刻,观察当前目录下文件:



将.ko文件添加到内核中

sudo insmod hello.ko


为了查看内核控制台信息,需要用到
dmesg
指令



可以看到,hello world成功输出

移除模块文件,需要用到如下指令

sudo rmmod hello


此刻,再查看下message



发现Goodbye, world成功输出、

如果想要了解具体细节,可以结合下参考资料!

参考资料:

1. tldp

2. thegeekstuff

3. youtube
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: