Chinaunix首页 | 论坛 | 博客
  • 博客访问: 801046
  • 博文数量: 247
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 501
  • 用 户 组: 普通用户
  • 注册时间: 2013-07-12 21:53
个人简介

系统未建立

文章分类

全部博文(247)

文章存档

2021年(1)

2020年(3)

2019年(5)

2018年(3)

2017年(44)

2016年(75)

2015年(52)

2014年(63)

2013年(1)

我的朋友

分类: LINUX

2016-12-06 20:09:05

记录2种驱动开发编译方式

1)在linux的drivers目录添加新的驱动目录,仿造其他已有目录构造Kconfig和Makefile

2)在linux目录之外独立添加新的驱动目录,采用以下模板:

ifeq ($(obj),)
obj= .
endif

DEPTH= .

CURDIR=$(shell pwd)

epon_reg-objs = eponreg.o switch_kernel.o eponmm.o
obj-m += epon_reg.o

ifeq ($(CONFIG_ARCH_FEROCEON),y)
 include $(TOPDIR)/$(MACHINE)/config/mvRules.mk
endif

all:
 $(MAKE) -C $(LINUX_KERNEL_PATH) CROSS_COMPILE=$(CROSS_COMPILER_KERNEL_PREFIX) SUBDIRS=$(shell pwd) modules

----------------------------------------------------------------------------------------

主要是all的编译语句,编译时会先切换到linux目录执行linux下 的Makefile,通过参数SUBDIRS和modules来表明以模块方式编译SUBDIRS目录,

linux下的scripts/Makefile.modpost被“linux下 的Makefile”引用,其中会include当前要编译模块的Makefile

# Include the module's Makefile to find KBUILD_EXTRA_SYMBOLS
include $(if $(wildcard $(KBUILD_EXTMOD)/Kbuild), \
             $(KBUILD_EXTMOD)/Kbuild, $(KBUILD_EXTMOD)/Makefile)
endif

这是linux内核提供的独立模块编译方式

阅读(627) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~