03、静态编译进内核实验
一、驱动编译方式
驱动程序的编译通常有两种方式:静态编译进内核和动态编译为内核模块。
- 静态编译进内核
静态编译是指将驱动代码直接编译到内核镜像中。这种方式的优点是驱动会随内核启动而自动加载,无需额外操作;但缺点是增加了内核镜像的大小,并且一旦内核重新编译或更新,驱动也需要随之调整。此外,如果驱动出现错误,可能会导致整个系统崩溃。 - 动态编译为内核模块
动态编译是将驱动以模块的形式编译,这种方式更加灵活,允许用户在系统运行时动态加载或卸载模块。这种方式适合调试阶段或需要频繁更新驱动的场景。
二、静态编译进内核
为了静态编译驱动模块,我们需要改写 Makefile 文件来定义编译规则。
上一小节的:obj-m += helloworld.o 变更为 obj-y += helloworld.o 即可
C++
obj-y += helloworld.o
1
除此外,还需要更改kernel/driver 目录下 的Makefile:
在文件末尾增加:
obj-y += test/
三、内核编译
sh
./build.sh kernel
1
如下编译日志可见,编译出hello.o 中间文件。
思考:
上述操作,我们默认就打开了hello.c文件的编译,但实际工作中,我们时常需要根据项目需要打开编译,此时我们就需要了解 deconfig 文件了。详见04