linux helloword 内核编译.ko菜鸟记录
2014-08-10 16:42
344 查看
从去年毕业出来一直做android的开发,可以说在学校里面学的都是软件应用的,从没接触过底层,硬件相关的,但在这一年中断断续续的接触了android下的串口通讯,led控制,android蓝牙电话功能的开发,这些几乎都涉及到了linux方面的知识,特别是.android NDK 中编译.so库,以及led ko模块,这些对于以前只关注应用的人来说是很痛苦的,
以前led .ko的时候感觉 这些很稀奇,很想自己编译一个内核模块在linux下运行,趁着这两天学习linux makefile文件的时候顺便也把这个编译一下
#helloc
#include <linux/init.h>
#include <linux/kernel.h>
#include <linux/module.h>
static int hello_init(void)
{
printk("Hello! This is the helloworld module!\n");
return 0;
}
static void hello_exit(void)
{
printk("Module exit! Bye Bye!\n");
return;
}
module_init(hello_init);
module_exit(hello_exit);
MODULE_LICENSE("GPL");
很常见的代码直接复制别人的,因为我只想看下 能编译成.ko 后加载内核模块和卸载模块
#Makefile
obj-m := hello.o
KERNELDIR ?= /lib/modules/$(shell uname -r)/build
PWD ?= $(shell pwd)
defalult:
make -C ${KERNELDIR} M=${PWD} modules
两个文件都写完了 直接cd 到当前目录 make 命令
就看到生成了helloko
查看效果需要想切换到root 权限下
在命令行下 输入 su
输入root 密码
做完这个再执行
insmod hello.ko
然后
dmesg
就看到一大屏的信息,看最后一行会有
Hello! This is the helloworld module!
说明你成功加载了
输入
rmmod hello.ko
就可以卸载模块了
对于菜鸟简单的看到效果,就是学习的最大动力,不需要绕一大圈,学了一堆才把想看的弄出来.
以前led .ko的时候感觉 这些很稀奇,很想自己编译一个内核模块在linux下运行,趁着这两天学习linux makefile文件的时候顺便也把这个编译一下
#helloc
#include <linux/init.h>
#include <linux/kernel.h>
#include <linux/module.h>
static int hello_init(void)
{
printk("Hello! This is the helloworld module!\n");
return 0;
}
static void hello_exit(void)
{
printk("Module exit! Bye Bye!\n");
return;
}
module_init(hello_init);
module_exit(hello_exit);
MODULE_LICENSE("GPL");
很常见的代码直接复制别人的,因为我只想看下 能编译成.ko 后加载内核模块和卸载模块
#Makefile
obj-m := hello.o
KERNELDIR ?= /lib/modules/$(shell uname -r)/build
PWD ?= $(shell pwd)
defalult:
make -C ${KERNELDIR} M=${PWD} modules
两个文件都写完了 直接cd 到当前目录 make 命令
就看到生成了helloko
查看效果需要想切换到root 权限下
在命令行下 输入 su
输入root 密码
做完这个再执行
insmod hello.ko
然后
dmesg
就看到一大屏的信息,看最后一行会有
Hello! This is the helloworld module!
说明你成功加载了
输入
rmmod hello.ko
就可以卸载模块了
对于菜鸟简单的看到效果,就是学习的最大动力,不需要绕一大圈,学了一堆才把想看的弄出来.
相关文章推荐
- linux helloword 内核编译.ko菜鸟记录
- 和菜鸟一起学linux:第六篇:将LED驱动编译到内核
- Linux下hello.ko内核模块制作的全过程
- linux编译ko文件(不同内核源码版本)
- linux内核编译错误记录
- Linux学习记录--内核|内核模块编译 推荐
- Linux下hello.ko内核模块制作
- 菜鸟浅谈Linux内核编译过程...
- 全志A10_linux3.0内核编译记录
- Linux 内核模块编译(hello.c)
- Linux下hello.ko内核模块制作的全过程
- 转载只为记录经典之<linux 内核编译祥解 >
- 如何编译linux第一个模块 hellomod.ko
- 全志A10_linux3.0内核编译记录
- 【记录】linux内核打补丁、编译
- Linux 编译内核全记录
- 自己常用Linux命令的记录--查看硬件相关信息,内核的编译,网络的配置
- 菜鸟浅谈Linux内核编译过程...
- 菜鸟浅谈Linux内核编译过程
- 内核编译记录--cc1: error: invalid option `abi=aapcs-linux'