0704最简单的驱动hello
来源:互联网 发布:淘宝哪店买结它推荐 编辑:程序博客网 时间:2024/05/18 17:02
1、程序hello.c
#include <linux/init.h>
#include <linux/module.h>
MODULE_LICENSE("Dual BSD/GPL");
static int hello_init(void)
{
printk(KERN_ALERT "hello\n");
return 0;
}
static void hello_exit(void)
{
printk(KERN_ALERT "exit\n");
}
module_init(hello_init);
module_exit(hello_exit);
2、Makefile文件
MODULENAME=hello
obj-m:=$(MODULENAME).o
KERNELDIR?=/lib/modules/$(shell uname -r)/build
PWD:=$(shell pwd)
modules:
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules//这里一定要用tab不能用空格,否则编译的时候会出现错误:make: 没有什么可以做的为 `modules'。
3、加载模块
root用户下:insmod ./hello.ko,但是什么输出都没看到。
lsmod查看加载模块能看到hello模块
rmmod hello
在日志文件中查找 cat /var/log/syslog|grep hello能够看到输出
4、安装内核源代码
uname-r 显示内核版本
/usr/src$ ls
linux-headers-3.2.0-23 linux-headers-3.2.0-23-generic-pae
123@123-virtual-machine:/usr/src$ sudo apt-cache search linux-source
[sudo] password for hxy:
linux-source - Linux kernel source with Ubuntu patches
linux-source-3.2.0 - Linux kernel source for version 3.2.0 with Ubuntu patches
123@123-virtual-machine:/usr/src$ sudo apt-get install linux-source-3.2.0
下载完成后
root@123:/usr/src#tar jxvf linux-source-2.6.20.tar.bz2
解压后生成一个新的目录/usr/src/linux-source-3.2.0,所有的源代码都在该目录下。
进入该目录
开始配置内核 选择最快的原版的配置(默认)方式
root@123:/usr/src/linux-source-3.2.0# make oldconfig
make 。
make bzImage
当然,第一个make也可以不执行,直接make bzImage。执行结束后,可以看到在当前目录下生成了一个新的文件: vmlinux, 其属性为-rwxr-xr-x。
然后 :
make modules /* 编译 模块 */
make modules_install /* 安装 模块 */
- 0704最简单的驱动hello
- 教你完成最简单的linux驱动 hello world
- 一步一步编写最简单的linux驱动 hello world
- 最简单的驱动hello.c与Makefile模板
- 最简单的驱动hello.c与Makefile模板
- 最简单的驱动hello.c与Makefile模板
- 简单的hello world驱动
- hello world 简单的驱动
- Android标准架构实例分析之编写最简单的hello驱动
- Ubuntu 下 简单的hello world 驱动
- wxWindows 最简单的Hello World程序
- Hello,Module 最简单的内核模块
- 一个最简单的hello world操作系统
- 最简单的hello内核模块
- 最简单的extjs hello world
- 最简单的驱动程序hello world
- linux最简单的驱动
- 最简单的块驱动
- 在Dduilib中使用OCX
- 架构之美-第16章-数据增长:FACEBOOK平台架构(3)
- socket编程
- this 和 getApplicationContext Context的区别
- Linux内核的ioctl函数学习
- 0704最简单的驱动hello
- ubuntu自定义快捷键(图形界面)
- 用手机gps定位获得准确的百度地图经纬度
- Informatica的Repository该如何备份呢?
- 浅析动态代理的实现
- g++: error trying to exec 'cc1plus': execvp: 没有那个文件或目录
- 使用source insight的一些设置
- 架构之美-第16章-数据增长:FACEBOOK平台架构(4)
- javascript JS 实现打印页面功能 支持多浏览器,兼容IE,火狐,谷歌