3.24课堂总结

一.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 (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,(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);//进入(1);//进入 (1); // 进入(1);//进入(1)所对应的目录,执行make命令
modules_clean = $(MAKE) clean -C $(1);//执行maky clean 命令
.PHONY: all mm mc clean
all: $(Target) //找到第一个目标;
mm:
@ (foreachn,(foreachn, (foreach n,(foreachn,(Modules),(callmodulesmake,(callmodulesmake, (call modules_make,(callmodulesm​ake,(n))) //执行的第一行代码,进入各个功能目录执行make命令
mc:
@ (foreachn,(foreachn, (foreach n,(foreachn,(Modules),(callmodulesclean,(callmodulesclean, (call modules_clean,(callmodulesc​lean,(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 ( T a r g e t ) @ e c h o c l e a n d o n e ! 注 释 : ① m a k e f i l e 提 供 了 灵 活 的 变 量 定 义 方 式 = : = ( 相 当 于 拼 接 , 但 前 面 的 变 量 不 能 通 过 后 面 的 变 量 定 义 ) + = ( 追 加 ) ? = ( 防 止 重 复 定 义 ) ② m a k e f i l e 里 的 函 数 : w i l d c a r d 格 式 : ( w i l d c a r d ∗ ∗ . c ) w i l d c a r d 功 能 : 列 出 当 前 目 录 下 的 符 合 模 式 参 数 的 文 件 名 ; p a t s u b s t 格 式 ( p a t s u b s t 模 式 参 数 , 参 数 1 , 参 数 2 , … ) p a t s u b s t 功 能 : 把 当 前 目 录 下 的 符 合 模 式 参 数 的 文 件 编 译 成 另 一 种 模 式 参 数 文 件 a d d s u f f i x 格 式 ( a d d s u f f i x 参 数 1 , 参 数 2 ) a d d s u f f i x : 在 参 数 2 中 的 每 个 单 词 加 上 后 缀 参 数 1 f o r e a c h : 循 环 取 出 参 数 1 中 的 值 , 赋 给 变 量 , 执 行 表 达 式 ; 例 如 a : = x y z r e s u l t : = (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:= (Target)@echocleandone!makefile=:=+=?=(makefilewildcard:(wildcard.c)wildcardpatsubstpatsubst12patsubstaddsuffixaddsuffix12addsuffix21foreach:1a:=xyzresult:=(foreach b, (a),(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是否为空;【前后都要有空格】
“&&”条件成立,执行&&后面的代码;
“||”条件不成立,执行||后面的代码;
for语句的语法:
for 变量名 in 值
do
执行的程序代码

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值