您的位置:首页 > 运维架构 > Linux

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

就可以卸载模块了

对于菜鸟简单的看到效果,就是学习的最大动力,不需要绕一大圈,学了一堆才把想看的弄出来.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: