电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

linux模块编译步骤(详解)VIP免费

linux模块编译步骤(详解)_第1页
1/15
linux模块编译步骤(详解)_第2页
2/15
linux模块编译步骤(详解)_第3页
3/15
Linux 内核模块编程 Linux 内核模块编程是一个很重要的知识点。尤其是编写底层驱动程序时,一定会涉及到它。内核模块编程也是 Tiger 哥学习 Linux 时第一节课所接触的知识。由此可以看出它的 important, 也可以看出其实它很 easy 。 一前言: 1. 什么是内核模块 1> 内核模块是具有独立功能的程序。它可以被单独编译,但是不能单独运行,它的运行必须被链接到内核作为内核的一部分在内核空间中运行。 2> 模块编程和内核版本密切相连,因为不同的内核版本中某些函数的函数名会有变化。因此模块编程也可以说是内核编程。 3> 特点: 模块本身不被编译进内核映像,从而控制了内核的大小; 模块一旦被加载,就和内核中的其他部分完全一样。 2 . 用户层编程和内核模块编程的区别 应用程序 内核模块程序 使用函数 libc 库 内核函数 运行空间 用户空间 内核空间 运行权限 普通用户 超级用户 入口函数 main() module_init 出口函数 exit() module_exit 编译 gcc makefile 链接 gcc insmod 运行 直接运行 insmod 调试 gdb kdbug 、 kdb 、 kgdb 二 . 说了这么多,那么怎么编写一个内核模块的程序呢? 1. 我们先来看两个最简单的函数实例,也是几乎所有程序员在学习一门新语言时都会编写的程序:输出 hello w orld! 现在我们分别用模块编程输出 hello w orld! ,和在用户层编程输出 hello w rold !。通过这两个程序我们来分析下如何来编写一个内核模块程序。 用户层编程: hello.c #include int main(void) { printf("hello world/n"); } 内核编程 : module.c #include #include #include MODULE_LICENSE("Dual BSD/GPL"); static int hello_init(void) { printk(KERN_ALERT "hello,I am edsionte/n"); return 0; } static void hello_exit(void) { printk(KERN_ALERT "goodbye,kernel/n"); } module_init(hello_init); module_exit(hello_exit); // 可选 MODULE_AUTHOR("Tiger-John"); MODULE_DESCRIPTION("This is a simple example!/n"); MODULE_ALIAS("A simplest example"); Tiger-John 说明: 1.> 相信只要是学过 C 语言的同学对第一个程序都是没有问题的。但是也许大家看了第二个程序就有些不明白了。 可能有人会说: Tiger 哥你没疯吧,怎么会...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

linux模块编译步骤(详解)

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部