歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

寫驅動時交叉編譯之makefile編寫模板(tiny6410)

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目錄下

Copyright © Linux教程網 All Rights Reserved