1.23苏嵌学习笔记

工程管理器-make
指管理较多的文件,make工程管理器也就是个“自动编译管理器”,这里的自动是指它能够根据文件时间戳自动发现更新过的文件而减少编译的工作量,同时它通过读入makefile文件的内容来执行大量的编译工作。

编写规则:
1.需要由make工具创建的目标体(target)(终极目标),通常是目标文件或可执行文件。
2.要创建的目标体所依赖的文件;创建每个目标体时需要运行的命令,这一行必须以制表符(tab)开头。

Makefile中常见的预定义变量有:
CC
C编译器的名称
cc(gcc)
CPP
C预编译器的名称
$(CC) -E
CXX
C++编译器的名称
g++
RM
删除程序的名称
rm -f
CFLAGS
CC的选项

CPPFLAGS
CPP的选项

CXXFLAGS
CXX的选项

make工具的基本用法如下:

make [-C dir] [-f file] [target …]
-C dir: 执行时进入dir目录,默认是当前目录
-f file: 使用file作为Makefile
target: 要完成的目标,目标在Makefile中定义,默认是定义的第1个目标
Makefile中把那些没有任何依赖只有执行动作的目标称为“伪目标”(phonytargets)。
.PHONY : clean
clean :
rm –f hello main.o func1.o func2.o
“.PHONY” 将“clean”目标声明为伪目标
在makefile中,存在系统默认的自动化变量
$^:代表所有的依赖文件
$@:代表目标
$<:代表第一个依赖文件
例:
hello: main.o func1.o func2.o
gcc main.o func1.o func2.o -o hello
=》
hello: main.o func1.o func2.o
gcc $^ -o $@

Makefile中“#”字符后的内容被视作注释。
hello: hello.c
@gcc hello.c –o hello
@:取消回显

*****makefile模板修改
1.scripts下的makefile *Target := 项目文件名
*Modules += 文件夹名(替换的文件)
*libs = -lpthread + … 如-lm(math.h)
2.修改include 目录下 myhead.h 加入函数声明,头文件声明
3.修改 main 目录下 src 目录下 main.c 头文件加入 #include"…/…/include/myhead.h"

Linux是一个多用户的操作系统。多用户意味着每个用户登录系统后,都有自己专用的运行环境。而这个环境是由一组变量所定义,这组变量被称为环境变量。常见的环境变量有:
PATH——决定了shell将到哪些目录中寻找命令或程序
HOME——当前用户主目录
HISTSIZE——历史记录数
LOGNAME——当前用户的登录名
HOSTNAME——指主机的名称
SHELL——前用户Shell类型
使用示例:
echo KaTeX parse error: Expected 'EOF', got '#' at position 47: … #̲ 查看PATH环境变量 exp…PATH # 设置PATH环境变量

脚本的第一行如下
#!/bin/sh
Shell将符号#后面的部分认为是注释,但这一行是有实际作用的。感叹号!后面的部分指明了要使用sh作为执行脚本的解释器。
脚本中的每一行是一条命令,多条命令也可以写在同一行,用分号;隔开。

  • Shell本身是一个用C语言编写的程序,它是用户使用Linux的桥梁。
  • Shell既是一种命令语言,又是一种程序设计语言。作为命令语言,它互动式地解释和执行用户输入的命令;
  • 作为程序设计语言,它定义了各种变量和参数,并提供了许多在高阶语言中才具有的控制结构,包括循环和分支。它虽然不是 Linux系统内核的一部分,但它调用了系统内核的大部分功能来执行程序、创建文档并以并行的方式协调各个程序的运行。

程序必须以下面的行开始(必须方在文件的第一行):
#!/bin/sh
#!用来告诉系统它后面的参数是用来执行该文件的程序。
要使脚本可执行:
chmod +x filename
然后,您可以通过输入: ./filename 来执行您的脚本

在shell编程中,所有的变量都由字符串组成,并且您不需要对变量进行声明。要赋值给一个变量,您可以这样写:
变量名=值
取出变量值可以加一个美元符号($)在变量前面
变量赋值时,“=”两边都不能有空格
BASH中的语句结尾不需要分号
$#:传入脚本的命令行参数个数
$*:所有命令行参数值,在各个参数值间留有空格
$0:命令本身(shell文件名)
$1:第一个命令行参数
$2:第二个命令行参数

  • -e 文件已存在
  • -f 文件是普通文件
  • -s 文件大小不为零
  • -d 文件是一个目录
  • -r 文件对当前用户可以读取
  • -w 文件对当前用户可以写入
  • -x 文件对当前用户可以执行
    例S5:
    #!/bin/sh
    folder=/home
    [ -r “$folder” ] && echo “Can read f o l d e r “ [ − f &quot; folder“ [ -f &quot; folder[f"folder” ] || echo “this is not file”

for循环与C语言中有所不同,在BASH中for循环的基本结构是:
for var in [list]
do
#code block
done
其中var是循环控制变量, [list]是var需要遍历的一个集合,do/done包含了循环体,相当于c语言中的大括号。另外do和for被写在同一行,必须在do前面加上“;”如: for var in [list];do

While循环的结构是:
while [condition]
do
#code block
done

until循环的结构是:
until [condition]
do
#code block
done
while和until的区别在于while为真时执行,until为假时执行;

BASH语句中的case和c语言中的类似可以用于进行多项分支控制:
case “$var” in
contidion1)
;;
contidion1)
;;
*)
default statements;;
esac

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值