LINUX驱动Makefile模板.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
网上有好多关于驱动的Makefile怎么写,驱动程序怎么运行,为什么驱动会没有main等等问题的问题的问题。下面我也给出我的驱动Makefile模板,这些东东都是在书籍和人家的研究成果上改进而来的,至于如何使用、怎么修改成自己的,大家就随意好了。 驱动测试有两种方式,一为内核树之内,一为内核树以外,前者有点复杂,涉及到将驱动放到合适的内核树目录,修改相应的Makefile以及Kconfig文件,不过,天下无难易之事,为之,难亦不难了;后者所做的劳动就不用那么多了,网上很多是使用这种方法,鄙人也随大流了。这个Makfile只适合于后者,特此说明。此外,内核的Makefile跟一般的应用程序的Makefile不太一样,就像驱动程序跟应用程序,内核头文件跟应用程序头文件等等,没必然关系,或者说是两码事,两者不能混为一谈。再有一点,驱动是跟内核打交道的,你的系统中必须有一个内核源代码,因为驱动的编译过程需要内核代码(或者只是头文件?未调查)。 闲话不多说,下面列出的Makefile在ldd3的基础上添加如下东东:样式输出,各种不同提示信息颜色不同,可自由修改;将模块名称独立出来,可用于单独一个驱动源代码文件,也可用于多个驱动源代码文件;增加另外几个伪目标。下面逐一说明。 ################################################################# # file name: Makefile # A simple Makefile for driver # by Late Lee at # based on LDD3 and other guys works # copyleft @ 2010 # ################################################################# ############样式输出 ### nothing, just for fun OFFSET=\x1b[21G # 21 col COLOR1=\x1b[0;32m # green COLOR2=\x1b[1;35m # COLOR3=\x1b[1;31m # red RESET=\x1b[0m CLEAN_BEGIN=@echo -e $(OFFSET)$(COLOR2)Cleaning up ...$(RESET) CLEAN_END=@echo -e $(OFFSET)$(COLOR2)[Done.]$(RESET) MAKE_BEGIN=@echo -ne $(OFFSET)$(COLOR1)Compiling ...$(RESET) MAKE_DONE=$(OFFSET)$(COLOR1)[Job done!]$(RESET); MAKE_ERR=$(OFFSET)$(COLOR3)[Oops! Error occurred]$(RESET); ### nothing end here CROSS_COMPILE=arm-linux- CC := $(CROSS_COMPILE)gcc LD := $(CROSS_COMPILE)ld ######### DEBUG部分 #DEBUG = y ifeq ($(DEBUG), y) DEBFLAGS = -O -g else DEBFLAGS = -O1 endif # sth wrong here, don’t know why #EXTRA_CFLAGS += $(DEBFLAGS) -I$(LDDINCDIR) #########驱动模块名称以及源文件部分 # module name here MODULE = GotoHell # obj-m = module # obj-y = into kernel # foo.o - foo.ko ifneq ($(KERNELRELEASE), ) obj-m := $(MODULE).o # 驱动源代码文件,.o形式 # your obj file(s) here $(MODULE)-objs := foo.o bar.o else KERNELDIR ?= /lib/modules/$(shell uname -r)/build PWD := $(shell pwd) ##########真正编译部分,添加了if语句 all: $(MAKE_BEGIN) @echo @if \ $(MAKE) -C $(KERNELDIR) M=$(PWD) modules;\ then echo -e $(MAKE_DONE)\ else \ echo -e $(MAKE_ERR)\ exit 1;

文档评论(0)

xxj1658888 + 关注
实名认证
文档贡献者

教师资格证持证人

该用户很懒,什么也没介绍

领域认证该用户于2024年04月12日上传了教师资格证

1亿VIP精品文档

相关文档