嵌入式课后总结(5)

一.client的程序

1.查看功能目录,先看scripts的目录下面的makefile
CC := gcc //gcc编译器
CFLAGS := -Wall -O3。
Libs = -lpthread //链接的库
Target := client //生成的目标
Source := $ (wildcard src/.c); //列出当前目录下src目录的所有.c文件 source=src/main.c src/add.c
Objs := (patsubst (patsubst %.c,%.o,(patsubst(Source)) //把source变量里的.c文件编译成.o文件 objs:src/main.o src/add.o
Modules += check_putin pack_message main //当前软件代码所有的功能目录
AllObjs := (addsuffix/src/∗.o, (addsuffix /src/*.o,(addsuffix/src/∗.o,(Modules)) //allobjs=check_putin/src/**.o main/src/.o,列出所有功能目录下的src目录下.o文件

2.总控的makefile
include scripts/Makefile //导入makefile,可以使用makefile定义的变量;
modules_make = $(MAKE) -C (1);//进入 所对应的目录,执行make命令
modules_clean = $(MAKE) clean -C $(1);//执行maky clean 命令
.PHONY: all mm mc clean
all: $(Target) //找到第一个目标;
mm:
@ (foreachn, (foreach n,(foreachn,(Modules),(callmodulesmake, (call modules_make,(callmodules
make,(n))) //执行的第一行代码,进入各个功能目录执行make命令
mc:@ (foreachn, (foreach n,(foreachn,(Modules),(callmodulesclean, (call modules_clean,(callmodules
clean,(n)))//进入各个功能目录,执行make clean 命令

$(Target) : mm
$(CC) $(CFLAGS) -o $(Target) $(AllObjs) $(Libs)
//gcc -Wall -o3 -o client check_putin/src/.o main/src/.o packmessage/src/*.o -lpthread 把所有.o文件链接成client
@ echo $(Target) make done! //echo打印

clean : mc
rm -rf $(Target)
@ echo clean done!

注释:
①makefile提供了灵活的变量定义方式
= := (相当于拼接,但前面的变量不能通过后面的变量定义)+= (追加) ?=(防止重复定义)
②makefile里的函数:
wildcard格式:(wildcard **.c)
wildcard功能:列出当前目录下的符合模式参数的文件名;

patsubst格式(patsubst 模式参数,参数1,参数2,…)
patsubst功能:把当前目录下的符合模式参数的文件编译成另一种模式参数文件

addsuffix格式 (addsuffix 参数1,参数2)
addsuffix:在参数2中的每个单词加上后缀参数1

foreach:循环取出参数1中的值,赋给变量,执行表达式;
例如 a:=x y z
result:= ( f o r e a c h b , ( a ) , ( a ) , ( a ) , (foreach b, (a), (a),(a), (foreachb,(a),(a),(a),(b).c)
输出的结果为“x.c y.c z.c”
call:循环赋值

cd 子目录 && $(MAKE)
mkdir -p add/src/
mv add.c add /src
tree
touch add/Makefile

二.改编小型计算器

1.建立功能目录
mkdir -p add/src sub/src div/src mul/src main/src scripts
mv add.c add/src/
mv sub.c add/src/

tree //apt install tree 装入命令,
touch add/Makefile
touch sub/Makefile

touch scripts/Makefile
cp -r …/client/Makefile //直接拷贝
cd scripts/ //进入scripts
cp …/…/client/scripts/Makefile.(拷贝到当前scripts下面)

cp …/client/check_putin/Makefile add/(拷贝5步,add,sub,div,mul,main)

vim scripts//改功能目录
把modules后面的功能目录改成 main add sub div mul
把目标改成cal,链接库改成 -lm
make_clean
make
执行./cal

三.脚本——shell编程(脚本:批处理)

1.shell的定义
①命令解析器:将用户输入的命令解析,调用相应的命令的可执行文件;
②脚本语言;
shell解析器到根目录/bin或/sbin,
常用的shell:sh,bash;
2.变量
变量=值;(等号两边不能有空格),如果是字符串,需要加“”
echo $a (不需要再后面加括号)
3.命令行参数(命令后面跟的参数)
Shell脚本传参,使用以下变量接收传入的参数
echo $0 #脚本名
echo $1 #第一个参数值
echo $2 #第二个参数值
echo $n #第n个参数值
echo $# #参数的个数
echo $$ #进程pid
echo $@ #所有参数
4.函数
定义函数;
函数传参,不需要加括号;

if语句条件判断之数字判断语法
$number1 -eq $nubmer2 #是否相等 equal
$number1 -ne $nubmer2 #是否不相等 not equal
$number1 -gt $nubmer2 #是否大于 greater than
$number1 -ge $nubmer2 #是否大于等于 greater or equal
$number1 -lt $nubmer2 #是否小于 less than
$number1 -le $nubmer2 #是否小于等于 less or equal
if 【 -z $a 】 //判断a是否为空;【前后都要有空格】
“&&”条件成立,执行&&后面的代码;
“||”条件不成立,执行||后面的代码;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值