一个内核模块的helloworld

编程技术  /  houtizong 发布于 3年前   136
helloworld.c
#include <linux/kernel.h>#include <linux/module.h>static int __init helloworld_init(void){    printk("<0>""helloworld!\n");    return 0;}static void __exit helloworld_exit(void){    printk("<0>""byebye!\n");}module_init(helloworld_init);module_exit(helloworld_exit);MODULE_LICENSE("GPL");MODULE_AUTHOR("haoning");

Makefile
ifneq ($(KERNELRELEASE),)obj-m := helloworld.oelsePWD := $(shell pwd)KVER ?= $(shell uname -r)KDIR := /lib/modules/$(KVER)/buildall:                $(MAKE) -C $(KDIR) M=$(PWD) modulesclean:                rm -rf *.cmd *.o *.mod.c *.ko *.mod.o *.ko.unsigned  modules.order  Module.symversendif



make
[root@mytest kernel]# makemake -C /lib/modules/2.6.32-431.11.2.el6.x86_64/build M=/data/haoning/kernel modulesmake[1]: Entering directory `/usr/src/kernels/2.6.32-431.11.2.el6.x86_64'  CC [M]  /data/haoning/kernel/helloworld.o  Building modules, stage 2.  MODPOST 1 modules  CC      /data/haoning/kernel/helloworld.mod.o  LD [M]  /data/haoning/kernel/helloworld.ko.unsigned  NO SIGN [M] /data/haoning/kernel/helloworld.komake[1]: Leaving directory `/usr/src/kernels/2.6.32-431.11.2.el6.x86_64'[root@mytest kernel]# 


[root@mytest kernel]# lshelloworld.c  helloworld.ko  helloworld.ko.unsigned  helloworld.mod.c  helloworld.mod.o  helloworld.o  Makefile  modules.order  Module.symvers[root@mytest kernel]# [root@mytest kernel]# insmod helloworld.ko[root@mytest kernel]# Message from syslogd@mytest at Jun  4 19:30:47 ... kernel:helloworld![root@mytest kernel]# rmmod helloworld.koMessage from syslogd@mytest at Jun  4 19:31:02 ... kernel:byebye![root@mytest kernel]# 


tailf /var/log/messages
查看日志

obj-m   意思是将后面跟的东西编译成内核模块。相对应还有:
obj-y    编译进内核
obj-n   不编译

hello.o            为模块名称
hello.o-objs    为模块依赖的文件名
KID 指定了内核源码的路径
PWD
为当前路径
-C                  选项的作用是指将当前工作目录转移到你所指定的位置。
“M=”            
选项的作用是,当用户需要以某个内核为基础编译一个外部模块的话,
                      需要在make modules 命令中加入“M=dir”,程序会自动到你所指定的dir目录中查找模块源码,
                      将其编译,生成KO文件
上一篇:kindle kterm笔记
下一篇:cp文件和mkstemp

请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!

留言需要登陆哦

技术博客集 - 网站简介:
前后端技术:
后端基于Hyperf2.1框架开发,前端使用Bootstrap可视化布局系统生成

网站主要作用:
1.编程技术分享及讨论交流,内置聊天系统;
2.测试交流框架问题,比如:Hyperf、Laravel、TP、beego;
3.本站数据是基于大数据采集等爬虫技术为基础助力分享知识,如有侵权请发邮件到站长邮箱,站长会尽快处理;
4.站长邮箱:[email protected];

      订阅博客周刊 去订阅

文章归档

文章标签

友情链接

Auther ·HouTiZong
侯体宗的博客
© 2020 zongscan.com
版权所有ICP证 : 粤ICP备20027696号
PHP交流群 也可以扫右边的二维码
侯体宗的博客