编译内核模块

编译内核模块:

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”。

猜你喜欢

转载自blog.csdn.net/liqi849478873/article/details/84525641