内核在编译的时候,可以支持单独模块化编译,只需要一个小小的Makefile即可搞定。
步骤如下:
1.在任意位置创建目录
vim Makefile
2.在Makefile中添加如下代码(我的kernel目录是/opt/kernel_xilinx_v4.4):
obj-m += my_drv.o
all:
make -C /opt/kernel_xilinx_v4. SUBDIRS=$(PWD) modules
clean:
make -C /opt/kernel_xilinx_v4. SUBDIRS=$(PWD) clean
3.保存退出即可
说明:
obj-m += my_drv.o:将my_drv.c单独编译成对应目标文件my_drv.ko
all:此目标没有依赖,但是此目标对应的命令:make -C /opt/kernel_xilinx_v4.4 SUBDIRS=$(PWD) modules 在执行 make 或者 make all 时就执行
make -C /opt/kernel_xilinx_v4.4:等价于先 cd /opt/kernel_xilinx_v4.4 然后执行 make modules
"-C":表示进入指定目录中
PWD:获取当前所在路径
SUBDIRS=$(PWD):告诉内核源码到指定目录去编译内核程序
clean:执行 make clean 时删除生成的目标文件
后续补充Makefile的语法规则。