编译内核模块:
make -C $(kernelDir) M=$(mPWD) -I$(IncludesDir) modules
-C DIRECTORY, --directory=DIRECTORY 在执行前先切换到 DIRECTORY 目录。
M=$(mPWD) 意思是返回到当前目录执行当前mPWD的Makefile
-C 指定内核的目录 M指定内核模块的源代码目录
"$(MAKE) -C $(KDIR) M=$(PWD)"与"$(MAKE) -C $(KDIR) SUBDIRS =$(PWD)"的作用是等效的
示例:
ifndef scriptDir
$(error scriptDir must be defined, perhaps use setupenv script?)
endif
obj-m := spi.o
include $(scriptDir)/make.top.include
drvName=spi
###LINUX_KERNEL := $(shell uname -r)
bldTree=$(buildDir)/$(kernelName)
MAKE=make -C $(bldTree) ARCH=powerpc CROSS_COMPILE=$(toolChainPrefix)- M=$(CURRENT_PATH) -I$(kernelIncludes)
modules:
$(MAKE) modules
all: clean modules
clean:
$(MAKE) clean
文件名操作函数
1、dir
$(dir src/foo.c hacks)返回值是“src/ ./”。
2、notdir
$(notdir src/foo.c hacks)返回值是“foo.c hacks”。
3、suffix
$(suffix src/foo.c src-1.0/bar.c hacks)返回值是“.c .c”。
4、basename
$(basename src/foo.c src-1.0/bar.c hacks)返回值是“src/foosrc-1.0/bar hacks”。
5、addsuffix
$(addsuffix .c,foo bar)返回值是“foo.c bar.c”。
6、addprefix
$(addprefix src/,foo bar)返回值是“src/foo src/bar”。
7、join
$(join aaa bbb , 111 222 333)返回值是“aaa bbb 111 222 333”。
字符串处理函数
1、subst : 字符串中的部分替换
$(subst ee,EE,feet on the street),
把“feet on the street”中的“ee”替换成“EE”,返回结果是“fEEt on the strEEt”。
2、patsubst :替换文件后缀
$(patsubst %.c,%.o,x.c.c bar.c)
把字串“x.c.c bar.c”符合模式[%.c]的单词替换成[%.o],返回结果是“x.c.o bar.o”
3、strip :去除字符串开头结尾的空格
$(strip a b c )
把字串“ a b c ”去到开头和结尾的空格,结果是“a b c”。
4、findstring :在字符串中查找字符串
$(findstring a,a bc) 在a b c中找a
$(findstring a,b c)
第一个函数返回“a”字符串,第二个返回“”字符串(空字符串)
5、filter 筛选出固定格式的文件
sources := foo.c bar.c baz.s ugh.h
foo: $(sources)
cc $(filter %.c %.s,$(sources)) -ofoo 找以 .c ,.s结尾的文件
$(filter %.c %.s,$(sources))返回的值是“foo.c bar.c baz.s”。
6、filter-out 剔除对应的文件
objects=main1.o foo.o main2.o bar.o
mains=main1.o main2.o
$(filter-out $(mains),$(objects)) 返回值是“foo.o bar.o”。
7、sort 排序
$(sort foo bar lose)返回“bar foo lose” 。
8、word 选出字符串中对应index的字符
$(word 2, foo bar baz)返回值是“bar”。
9、wordlist 选择第n个字符
$(wordlist 2, 3, foo bar baz)返回值是“bar baz”。
10、words 计算字符串的个数
$(words, foo bar baz)返回值是“3”。
11、firstword 去除第一个字符
$(firstword foo bar)返回值是“foo”。