Linux 下面编译内核模块的 方法
来源:互联网 发布:淘宝全球购有没有假货 编辑:程序博客网 时间:2024/06/02 04:23
(1) 选择好你的内核版本,内核模块经常是和内核版本紧密相关的,建议尽量选择高内核的版本,否则有可能会遇到很大的问题。
(2) 下载内核代码到/usr/src/kernel/目录。如果有了,则不用下载。
(3) mkdir -p /lib/modules/3.10.102-1.el6.elrepo.x86_64 #其中3.10.102-1.el6.elrepo.x86_64 是uname -r 的结果。
ln -s /usr/src/kernels/linux-3.10.102/ /lib/modules/3.10.102-1.el6.elrepo.x86_64/build #源代码的目录要和build的内核版本匹配
(4) #cd /usr/src/kernels/linux-3.10.102/
这一步可能需要进行一些内核参数的配置
#make oldconfig
#make prepare
#make script ###如果不执行这个会导致下面的错误:
error linux/scripts/recordmcount: No such file or directory
# make
#make bzImage (bzimage可以代替zImage)#主要用于编译内核的文件。
#make modules #将内核选项中的M选项的配置编译为了*.ko文件。
#make modules_install #将生成的*.ko文件复制到/lib/modules/<内核版本号>/下面,并运行depmod生成modules.dep内核模块的依赖文件,insmod和modprobe需要这些依赖去自动加载依赖的ko文件,否则需要手动添加依赖模块后,才能将内核模块inster进内核中去。 或者用modprobe,modprobe会读取文件
/lib/modules/3.10.0-229.el7.x86_64/modules.dep .此文件文件 可以由工具depmod 根据当前加载的ko模块生成或者收到编译。这个文件主要指明了内核版本需要加载哪些内核模块以及内核模块的依赖模块。modules.dep假设ko文件位于目录/lib/modules/version/目录下面。
以行为单位
#modulea.ko 依赖depend1.ko和depned2.ko
MODULEA.ko: DEPEND1.ko DEPEND2.ko
更准确的描述如下:
/lib/modules/2.6.29/kernel/a.ko: /lib/modules/2.6.29/kernel/c.ko /lib/modules/2.6.29/kernel/b.ko/lib/modules/2.6.29/kernel/b.ko:/lib/modules/2.6.29/kernel/c.ko: /lib/modules/2.6.29/kernel/b.komodproe a.ko的时候,他会按照顺序(从右向左)加载b.ko和c.ko.
(5) 开始编译自己的内核模块
- Linux 下面编译内核模块的 方法
- 编译内核模块的方法
- linux内核模块的编译
- Linux内核2.4和2.6编译模块的方法
- 快速编译Linux内核需要的模块方法
- Linux内核2.4和2.6编译模块的方法
- Linux内核模块:模块的编译
- Ubuntu12.10 内核源码外编译 linux模块--编译驱动模块的基本方法
- Ubuntu12.10 内核源码外编译 linux模块--编译驱动模块的基本方法
- Ubuntu12.10 内核源码外编译 linux模块--编译驱动模块的基本方法
- linux内核模块编译
- linux内核模块编译
- Linux内核模块编译
- Linux内核模块编译
- Linux 内核 模块 编译
- linux内核模块编译
- linux内核模块编译
- Linux内核模块编译
- Nested weights are bad for performance
- 《孟子》的雄辩
- php面试题
- Android程序开发意见反馈的实现
- MATLAB利用ApplicationCompiler创建独立的应用程序
- Linux 下面编译内核模块的 方法
- TERMIOS_H 详细注释
- 工具使用-maven 修改默认JDK版本和指定项目JDK版本
- Linux常用命令大全
- android 加载显示图片
- 工具使用-Maven将项目发布到私服
- 《后汉书》
- spfa
- Julia : “;”和[] 引发的差别