1.source=-KaTeX parse error: Expected 'EOF', got '#' at position 19: …ldcard src/*.c)#̲列出当前目录下src目录地所在…(patsubset 模式参数,参数1,参数2,…)
result :=
(
p
a
t
s
u
b
s
t
将
s
o
u
r
c
e
变
量
里
.
c
的
文
件
编
译
成
.
o
文
件
3.
m
o
d
u
l
e
s
+
=
c
h
e
c
k
p
u
t
i
n
p
a
c
k
m
e
s
s
a
g
e
m
a
i
n
当
前
软
件
代
码
的
所
有
功
能
目
录
4.
a
d
d
s
u
f
f
i
x
格
式
:
(patsubst %.c, %.c, %.o, x.c y.c) 将source变量里.c的文件编译成.o文件 3.modules +=check_putin pack_message main当前软件代码的所有功能目录 4.addsuffix 格式:
(patsubst将source变量里.c的文件编译成.o文件3.modules+=checkputinpackmessagemain当前软件代码的所有功能目录4.addsuffix格式:(addsuffix 参数1,参数2)
功能:在参数2中的每个单词加上后缀参数1
返回值:加上后最的所有单词
例如:
result :=
(
a
d
d
s
u
f
f
i
x
.
c
,
x
y
)
r
e
s
u
l
t
的
值
为
“
x
.
c
y
.
c
”
5.
(addsuffix .c,x y) result 的值为“x.c y.c” 5.
(addsuffix.c,xy)result的值为“x.cy.c”5.(foreach 变量参数,参数1,表达式)
功能:循环取出参数1中的但粗赋给变量参数,然后运行表达式
返回值:表达式的运行结果
a:- x y z
result: -
(
f
o
r
c
e
a
c
h
b
,
(forceach b,
(forceachb,(a),
(
b
)
.
c
)
r
e
s
u
l
t
的
值
为
“
x
.
c
y
.
c
z
.
c
”
注
意
,
b
在
这
里
是
一
个
临
时
变
量
66.
(b).c) result的值为“x.c y.c z.c” 注意,b在这里是一个临时变量6 6.
(b).c)result的值为“x.cy.cz.c”注意,b在这里是一个临时变量66.(make)-(
(
1
)
进
入
(1)进入
(1)进入(1)所对应目录执行make命令
7.make 嵌套:cd 子目录 && $(make) 或(make) -c 子目录
例如:
首先在/home/b目录下新建一个子makefile.如下所示:
b.o:b.c
cc -c -o b.o b.c
然后修改/home目录中的总控Makefile,
8. 9.echo 是打印
10.
嵌入式Linux开发工具:shell编译(脚本:批处理)Linux系统云给工程师(嵌入式系统开发–系统移植)
shell:1.命令解析器(将用户输入的命令解析,调用相应的命令的可执行文件)
2.脚本语言
3.shell既是一种命令语言,又是一种程序设计语言。作为命令语言,它互动式地解释和执行用户输入的命令。执行效率低
4.它定义了各种变量和参数,并提供了许多在高阶语言中才具有的控制结构,包括循环和分支。它虽然不是 Linux系统内核的一部分,但它调用了系统内核的大部分功能来执行程序、创建文档并以并行的方式协调各个程序的运行。
5.种类
Bourne shell(sh)
Korn shell(ksh)
Bourne Again shell(bash)
C shell(包括csh and tcsh)
TENEX/TOPS C shell(tcsh)
命令:可执行文件
6.If [expression]
then
#code block
else
#code block
fi
7.
8.
9.
10.
11.
12.
通过“=”来实现
例如:
a1= $(a2)
a2= $(a3)
a3= a.o
这种方式下变量a1的值是a.o,也就是说前面的变量可以通过后面的变量来定义。但使用这种方式定义变量时,要防止出现死循环的情况。
(2)通过“:=”来实现
例如:
a1:= a.o
a2:= $(a1) b.o
这种方式下变量a1的值是a.o,变量a2的值是a.o b.o。
例如:
a1:= $(a2) b.o
a2:= a.o
这种方式下变量a1的值是b.o,而不是“a.o b.o”。也就是说前面的变量不能通过后面的变量来定义。
(3)通过“+=”来实现
例如:
a1= a.o
a1+= b.o
这种方式下变量a1的值是“a.o
b.o”。也就是说“+=”可以实现给变量追加值。等同于如下示例:
a1= a.o
a1:= $(a1) b.o
可以看到,Makefile的“+=”和C语言中的“+=”是非常相似的。
(4)通过“?=”来实现
例如:
a1:= a.o
a1?=b.o
这种方式下变量a1的值是a.o,而不是b.o。也就是说,如果变量a1已经在前面定义过了,那么后面的定义就无效了