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  這裏申明這三個目標爲虛擬目標,防止因爲有重名文件導致的不能正常編譯

 

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