編寫嵌入式的Makefile有幾個地方需要注意的:
一般我們在x86下編譯驅動
1.首先編寫一個Makefile,內容如下
//////////////////////////////
obj-m :=drv.o
drv.objs +=file1.o file2.o
/////////////////////////////
2.再執行
make -C /內核源碼路徑/ M=/驅動所在的目錄/ modules
這是編寫x86驅動一種簡單的方法
與此同理編寫arm的驅動只需要把Makefile需改一下就可以了。Makefile 應該包含有下面的內容
//////////////////////////////
ARCH=arm //這一句很重要丟掉會出現很多問題
CC :=arm-linux-gcc
LD :=arm-linux-ld
obj-m :=drv.o
drv.objs +=file1.o file2.o
/////////////////////////////
我們也可以把命令都寫到一個Makefile文件裏
簡單形式如下
x86平臺下
/////////////////////////////////////
ifneq ($(KERNELRELEASE),)
obj-m :=drv.o
drv.objs +=file1.o file2.o
else
KERNELDIR ?= /內核源碼路徑
PWD := $(shell pwd)
default:
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules
endif
clean:
rm -rf *.o *.ko
//////////////////////////////////////////
arm平臺下
/////////////////////////////////////
ifneq ($(KERNELRELEASE),)
ARCH=arm //這一句很重要丟掉會出現很多問題
CC :=arm-linux-gcc
LD :=arm-linux-ld
obj-m :=drv.o
drv.objs +=file1.o file2.o
else
KERNELDIR ?= /內核源碼路徑
PWD := $(shell pwd)
default:
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules
endif
clean:
rm -rf *.o *.ko
//////////////////////////////////////////