Linux设备驱动(2)——编译加载

本文深入探讨内核编译流程、所需工具版本、Makefile配置、模块加载及冲突解决策略,涵盖从源码编译到模块加载的全过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.内核编译说明:Document/kbuild

2.内核编译需要的工具版本:Document/Changes

3.已经构建内核源码树环境的Makefile: obj-m := hello.o

4.make -C ~/kernel-2.6 M=`pwd` modules

该命令开始是改变它的目录到用 -C 选项提供的目录下(内核源码源码目录),它在那里会发现内核的顶级makefile,M= 选项使makefile 在试图建立模块目标前回到你的模块源码目录

5.insmod 加载模块的代码段和数据段到内核

6.modprobe 查看要加载的模块,看是否引用了当前内核没有定义的符号,如果发现有,在定义相关符号的当前模块搜索路径中寻找其他模块,当modprobe找到这些模块,它把他们加载到内核,如果在这种情况下代替以使用insmod,命令会失败,在系统日志中留下一句:“unresolved symbols”消息。

7.内核认为一个给定模块是针对一个正确的内核版本建立的,建立过程的一步是对当前内核树中的文件连接你的模块,这包含了相当多的有关要为其建立模块的内核信息,包括内核版本,编译器版本等,当加载一个模块时,这些信息将被检查与运行内核的兼容性,如果不匹配,模块不会加载。你将看到:

# insmod hello.ko
Error inserting './hello.ko': -1 Invalid module format

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值