Linux驱动学习(模块1)

本文介绍了使用C语言编写的Linux内核模块helloworld示例。该模块包含加载和卸载函数,并通过 printk() 函数输出相应的消息。文章还提供了 Makefile 的配置及如何编译、加载和卸载模块的具体步骤。

驱动学习第一篇 hello world

hello.c

/*************************************************************************
*       > File Name: hello.c
*       > Author: Devil_box
*       > Mail: 18855953390@163.com
*       > Created Time: 2016年05月20日 星期五 14时07分58秒
*       > Introduction: 
 ************************************************************************/
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/init.h>

MODULE_LICENSE ("GPL");


//模块加载函数
int __init init_module (void)
{
        printk("This module was added by the kernel!\n");
        return 0;
}


//模块卸载函数
void __exit cleanup_module (void)
{
        printk("This module was removed by the kernel!\n");
}


Makefile

NELRELEASE enviroment value
ifeq ($(KERNELRELEASE),)
#It's NULL, so to set the enviroment value


KERNELDIR ?= /lib/modules/$(shell uname -r)/build
PWD :=$(shell pwd)

modules:
        $(MAKE) -C $(KERNELDIR) M=$(PWD) modules

modules_install:
        $(MAKE) -C $(KERNELDIR) M=$(PWD) modules_install

clean:
        rm -rf *.o *~ core .depend .*.cmd *.ko *.mod.c .tmp_versions Module* modules*



.PHONY: modules modules_install clean
#To create obj file
else
                obj-m := hello.o
endif

在终端里面 执行make,如下图所示:
这里写图片描述
生成ko文件。
再在root用户下,将ko文件加载到内核里面去。insmod 内核名
这里写图片描述

查看模块是否加载进去 lsmod
这里写图片描述
说明已经加载了进去,打印内核输出语句 dmesg
这里写图片描述
说明模块加载进内核并正常初始化
卸载模块 rmmod 内核名
这里写图片描述
查看内核输出结果

说明模块正常被卸载并打印卸载信息。

内核模块学习第一篇完!!

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值