驱动 makefile之痛
来源:互联网 发布:sql数据库表修复 编辑:程序博客网 时间:2024/05/01 15:01
学习驱动的时候,第一驱动是关于字符设备驱动的。关于makefile,由于和应用程序的makefile不大一样啊,拿到一看很多变量什么的都没有见过。哎,makefile的基础差,尝到苦果了。无奈下载了《makefile跟我一起写》看了几遍,不得其法啊。还是解决不了我遇到的问题。百度,“armlinux 驱动 makefile”遇到有源码的,复制来,修改下,还是不行。琢磨了好些时间,差不多弄懂了原理和变量含义。
(此程序由网上程序修改的来)
ifneq ($(KERNELRELEASE),)
obj-m :=demo.o
else
#KERNELDIR ?=/usr/src/linux-headers-2.6.31-14/
PWD := $(shell pwd)
KVER ?= $(shell uname -r)
KDIR := /lib/modules/$(KVER)/build
default:
$(MAKE) -C $(KDIR) M=$(PWD)(进入两个目录,-C $(KDIR) 指明跳转到内核源码目录下读取那里的Makefile;M=$(PWD) 表明然后返回到当前目录继续读入、执行当前的Makefile。)
clean:
rm -rf *.o *~ core .depend .*.cmd *.ko *.mod.c
rm -rf Module.markers Module.symvers modules.order
endif
原理:当我们敲下make时,我们进入了这个权威的makefile二次。第一次进入makefile,发现KERNELRELEASE没有被设置时,于是她根据build这个符号链接定位内核源代码目录,然后进入default,开始第二个make,-C选项进入内核源代码目录,找到顶层的makefile,然后-M返回当前目录执行makefile文件,这就是第二次进入这个makefile,在这次,由于KERNELRELEASE变量已经定义,因此不需要进入else语言,在这里,obj-m:=demo.o这个语句和我们以前不是驱动程序中的makefile不同,在这里内核会帮你处理一切,这句话是告诉内核,需要从demo.o创建一个驱动模型(module)。
(本段来自CSDN博客,转载请标明出处:http://blog.csdn.net/abc19842008/archive/2008/02/14/2095836.aspx)
此处的KDIR,(见#项)有别人指定的内核源码:/usr/src/linux-2.6.31/include.在我的环境下一直没有编译成功。纠结了几天。郁闷!
- 驱动 makefile之痛
- 驱动之makefile详解
- 驱动 之 makefile 详解
- 4412驱动实验之04 Makefile 编译
- 一步一步学习 Linux 驱动之驱动模块 MakeFile 解析
- linux驱动之模块驱动makefile详细分析
- 驱动Makefile
- 驱动Makefile
- 写驱动时交叉编译之makefile编写模板(tiny6410)
- 写驱动时交叉编译之makefile编写模板(tiny6410)
- 写驱动时交叉编译之makefile编写模板
- 写驱动时交叉编译之makefile编写模板(tiny6410)
- 一步一步学习 Linux 驱动之(Kconfig、Makefile)
- 驱动模块Makefile解析
- 驱动的Makefile
- 网卡驱动的Makefile
- 驱动Makefile-示例
- 嵌入式驱动Makefile编写
- 使用SubVersion+TortoiseSVN多仓库方式进行版本控制
- Aix5.3下Oracle 10g设置归档模式到文件系统
- 中级软件设计师复习手抄(3)
- 基于PC/SC的智能卡访问及11.11指令封装类
- oracle dbtimezone修改
- 驱动 makefile之痛
- svnadmin dump备份工具
- 关于membership的一点资料
- android的国际化及本地化
- 科学思维的逻辑方法揭示世界的有机结构
- c# 输入法全角/半角切换问题
- 在MFC中数据类型的转换:比如将char *转换为cstring
- 在winxp中部署asp.net mvc
- FireBug使用指南