linux加载mod初学
2016-03-04 13:07
495 查看
主要是给自己看的
1.准备源文件
起名叫mymod.c
#include <linux/init.h>
#include <linux/module.h>
MODULE_LICENSE("Dual BSD/GPL");
static int hello_init(void)
{
printk(KERN_ALERT "Hello, world\n");
return 0;
}
static void hello_exit(void)
{
printk(KERN_ALERT "Goodbye, cruel world\n");
}
module_init(hello_init);
module_exit(hello_exit);
2.编写Makefile文件
这是抄别人的http://blog.csdn.net/hanchaoman/article/details/6962293,但是注意在default和clean下面要有tab分隔符,不能用空格代替,会出错,博客上打不出来tab...
还有Makefile,M要大写
Makefile
obj-m := modules.o
modules-objs:= mymod.o
KDIR := /lib/modules/`uname -r`/build
PWD := $(shell pwd)
default:
make -C $(KDIR) M=$(PWD) modules
clean:
rm -rf *.o .* .cmd *.ko *.mod.c .tmp_versions
3编译
进入终端,需要进入你的Makefile和源文件的目录
输入make
4加载卸载模块
用insmod和rmmod,要root权限
insmod modules.ko
rmmod modules
这个“modules”名字就是makefile第一行的那个。
我用的ubuntu14.04,输出可以在/var/log/syslog中找到
Dec 8 15:15:59 syj-Inspiron-5520 kernel: [ 6730.734175] Hello, world
Dec 8 15:17:01 syj-Inspiron-5520 CRON[5589]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly)
Dec 8 15:18:33 syj-Inspiron-5520 AptDaemon: INFO: Quitting due to inactivity
Dec 8 15:18:33 syj-Inspiron-5520 AptDaemon: INFO: Quitting was requested
Dec 8 15:20:13 syj-Inspiron-5520 kernel: [ 6984.808345] Goodbye, cruel world
1.准备源文件
起名叫mymod.c
#include <linux/init.h>
#include <linux/module.h>
MODULE_LICENSE("Dual BSD/GPL");
static int hello_init(void)
{
printk(KERN_ALERT "Hello, world\n");
return 0;
}
static void hello_exit(void)
{
printk(KERN_ALERT "Goodbye, cruel world\n");
}
module_init(hello_init);
module_exit(hello_exit);
2.编写Makefile文件
这是抄别人的http://blog.csdn.net/hanchaoman/article/details/6962293,但是注意在default和clean下面要有tab分隔符,不能用空格代替,会出错,博客上打不出来tab...
还有Makefile,M要大写
Makefile
obj-m := modules.o
modules-objs:= mymod.o
KDIR := /lib/modules/`uname -r`/build
PWD := $(shell pwd)
default:
make -C $(KDIR) M=$(PWD) modules
clean:
rm -rf *.o .* .cmd *.ko *.mod.c .tmp_versions
3编译
进入终端,需要进入你的Makefile和源文件的目录
输入make
4加载卸载模块
用insmod和rmmod,要root权限
insmod modules.ko
rmmod modules
这个“modules”名字就是makefile第一行的那个。
我用的ubuntu14.04,输出可以在/var/log/syslog中找到
Dec 8 15:15:59 syj-Inspiron-5520 kernel: [ 6730.734175] Hello, world
Dec 8 15:17:01 syj-Inspiron-5520 CRON[5589]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly)
Dec 8 15:18:33 syj-Inspiron-5520 AptDaemon: INFO: Quitting due to inactivity
Dec 8 15:18:33 syj-Inspiron-5520 AptDaemon: INFO: Quitting was requested
Dec 8 15:20:13 syj-Inspiron-5520 kernel: [ 6984.808345] Goodbye, cruel world
相关文章推荐
- linux python终端方向键输入显示乱码 解决方法
- Install sharelatex on virtual machine
- CentOS环境下,gdb调试中出现:Missing separate debuginfos, use: debuginfo-install.....的问题
- centos 安装 mysql 5.6和workbench
- Linux 三剑客之AWK
- Linux 三剑客之Grep&Sed
- 和菜鸟一起学linux之V4L2摄像头应用流程
- Linux内核分析:实验二
- Linux下redmine的部署
- linux安装windows常用中文字体库
- scp总结
- The Command Line Crash Course-命令行速成课程
- Linux搭建SVN 服务器
- linux 系统权限 数字含义
- 详解Linux中监控CPU与虚拟内存运行信息的命令用法
- ping不通Linux系统解决方法
- Linux系统中操作文件数过多导致的错误解决方法
- linux下的二进制文件的编辑和查看
- linux 命令之cat命令
- 查看Linux主机CPU及内存信息