ifneq ($(KERNELRELEASE),)
obj-m := mini6410_leds.o
else
KERNELDIR := /opt/FriendlyARM/mini6410/linux/linux-2.6.38
PWD:=$(shell pwd)
all:
make -C $(KERNELDIR) M=$(PWD) modules
clean:
rm -rf *.ko *.o *.mod.c *.mod.o *.symvers
endif
解析:
obj-m := mini6410_leds.o //驅動的源文件名:把.c改為.o就行了
KERNELDIR := /opt/FriendlyARM/mini6410/linux/linux-2.6.38 //虛擬機中所放的與你使用的開發板上的linux版本相同的linux內核源碼的位置
makefile中的幾個空格是用tab鍵弄出來的,這個要注意!
注意:我們在make之前要將/opt/FriendlyARM/mini6410/linux/linux-2.6.38 這個目錄下的源碼先編譯一邊,這樣才能順利make並生成.ko文件
編譯內核過程(在/opt/FriendlyARM/mini6410/linux/linux-2.6.38 目錄下,具體情況視自己個人放的源碼位置):
1.命令:make uImage ARCH=arm CROSS_COMPILE=arm-linux-
在編譯過程中可能會出現錯誤:"mkiamge" command not found -U-Boot iamges will not be built
這是系統中沒有安裝mkimage工具
如果是Ubuntu用戶可以 apt-get install xxx(具體名字可以上網查)
安裝好後再重新編譯就行了
生成的內核映像放在:arch/arm/boot目錄下