Linux2.6驱动编译分析

驱动与内核相关,所以对驱动的编译来说,真正的编译者是内核的Makefile。可以从下面看到

KERNELDIR ?= /linux-2.6.30.4
# The current directory is passed to sub-makes as argument
PWD := $(shell pwd)
CROSS_COMPILE = arm-linux-
CC = $(CROSS_COMPILE)gcc看出

obj-m := led.o

modules:
 $(MAKE) -C $(KERNELDIR) M=$(PWD) modules

clean:
 rm -rf *.o *~ core .depend .*.cmd *.ko *.mod.c .tmp_versions

.PHONY: modules modules_install clean

obj-m := led.o 将led.o放入模块编译列表,obj-m会在内核Makefile中被使用。led.o是一种被内核Makefile中解释的隐式规则。

$(MAKE) -C $(KERNELDIR) M=$(PWD) modules 会进入内核源码目录( $(KERNELDIR)指定)调用总的Makefile;

        $(PWD)指定当前目录为待编译模块目录;modules为模块编译选项

.PHONY: modules modules_install clean  这里申明这三个目标为虚拟目标,防止因为有重名文件导致的不能正常编译

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章