静态加载
![]()
1.编辑kconfig(增加驱动选项)

2.配置kconfig文件就是配置menuconfig,区别在后者有界面而已
配置完了需要把配置好的kconfig文件make一下,也就是make menuconfig:
出来是这样的:

3.编辑makefile,把之前在kconfig里面定义的驱动写到obj后面去,并且标记使能

4.最后执行make,把驱动编进内核,完毕。

动态加载
1.编辑驱动.c文件
2.编辑makefile
3.用之前的make编译驱动.c文件得到.ko动态二进制文件
4.用mknod新建设备文件在/dev里面,然后驱动程序helloDev.ko和设备文件/dev/hello通过主设备号和从设备号来建立联系)。然后可以通过insmod,rmmod,lsmod来操作管理驱动
5.加载insmod这个一般通过脚本来,如果没有,就自己写脚本来加载insmod
6.
动态库在哪:
一般动态加载的动态库会有一个专门的地方放它,每个不同的厂家不同,需要去vendor目录下面找;然而 Linux里面这些动态库文件一般在编译的时候以模块的形式安装,在/lib/modules目录中增加一个以新内核版本为名字的目录,新的模块文件就放在里面
(module就是Linux自带的一个管理和存放环境变量的工具,linux中module工具的使用介绍_Alfred.HOO的博客-CSDN博客_linux module)
设备树(boot阶段)
一般而言boot不怎么改,因为boot在(不易失)硬盘里面,
boot会把设备树和硬件配置告诉内核,但是只会检查设备树的语法,不会检查内容,所以如果设备树寄存器配置错误的话,是不会报错的。这里也需要检查一下。
【Linux内核驱动】驱动的静态加载和驱动的动态加载_今天你头秃了吗?的博客-CSDN博客_linux内核驱动加载