首页 > 其他 > 详细

驱动的编译方法

时间:2019-11-17 22:36:49      阅读:99      评论:0      收藏:0      [点我收藏+]

Makefile

1 obj-m += xxx.o
2
3 KERN_DIR = /work/system/linux-2.6.22.6
4
5 PWD = $(shell pwd)
6

7 all:
8 make -C $(KERN_DIR) M=$(PWD) modules
9

10 clean:
11 make -C $(KERN_DIR) M=$(PWD) modules clean
12 rm -rf modules.o
rder

   ?

解析:

  obj-y += xxx.o

  该模块将会编译到zImage

? ?

  obj-m += xxx.o

  该模块不会编译到zImage ,但会生成一个独立的 xxx.ko 静态编译。

? ?

  KERN_DIR = /work/system/linux-2.6.22.6 

  这句是对 KERN_DIR 进行赋值,确定后面使用内核源码时的内核源码路径。

? ?

  PWD = $(shell pwd)  

  这句表示当前路径

? ?

  make -C $(KERN_DIR) M=$(PWD) modules

  这句是 makefile 中的规则:

make modules 就是编译成模块的意思;

-C 指从当前工作目录转移到你所指定的位置;

-C $(KDIR) 指明跳转到内核源码目录下读取那里的 Makefile

M= 指明需要编译成模块的源文件的位置;

M=$(PWD) 指明需要编译成模块的源文件在当前目录下;

因此程序会自动返回到当前目录中查找模块源码,将其编译,生成KO文件。

? ?

  make -C $(KERN_DIR) M=$(PWD) modules clean    

  这句也是 makefile 中的规则:

make modules clean

将已经编译-链接成的KO文件删除;

? ?

rm -rf modules.order

这句的意思就是删除编译-链接过程中生成的其他文件;

驱动的编译方法

原文:https://www.cnblogs.com/lilto/p/11878303.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!