lab-classic 实验 1 简易计算器的编译

知识点: 1.GCC编译的使用方式 2.GCC链接的使用方式 3.GCC静态链接的使用方式 4.GCC动态链接的使用方式 5.GCC静态链接动态链接混用的方式

lab-classic 实验 2 Makefile 基础规则(1)

知识点: 1.makefile的基本编译规则。 2.make更新目标的依据:时间戳。 3.makefile目标依赖的执行顺序为从左至右。 4.makefile变量的赋值与使用。 5.PHONY的作用:声明伪目标。“”的作用:让make忽略该命令的错误。 6.make搜寻makefile的命名规则:"GNUmakefile">"makefile">"Makefile"

lab-classic 实验 3 Makefile 基础规则(2)

知识点: 1.makefile文件不存在的情况下也可以利用make的自动推导规则实现代码编译。 2.include指示符可以让make读入其指定的文件。 3.include指定文件时可以支持通配符。 4.include的默认查找路径:/usr/gnu/include/usr/local/include/usr/include。 5.include可以用I选项指定查找路径。 6.变量MAKEFILES可以指定需要读入的makefile文件。 7.变量MAKEFILES的使用限制:不可作为终极目标。 8.变量MAKEFILE_LIST的作用:将"MAKEFILES",命令行指定,默认makefile文件及“include”指定的文件名都记录下来。 9.makefile重载另一个makefile的限制条件:规则名称不得重名。 10.makefile的“所有匹配模式”的使用。

lab-classic 实验 4 Make 的处理阶段及条件执行

知识点: 1.make分为两个处理阶段:1)读取所有makefile文件,内建变量、规则和依赖关系结构链表。2)执行更新和重建。 2.makefile中可以使用反斜线将语句和命令分成多行。 3.makefile中可以使用$$$$打印当前进程id。 4.makefile中条件语句的基本格式。 5.makefileifeqifneqifdefifndef的使用。

lab-classic 实验 5 Makefile 规则进阶(1)

知识点: 1.makefile终极目标的定义:make不指定具体目标时的默认目标,一般为makefile文件中的第一个目标。 2.不能作为终极目标的情况:1)以“”开头,其后不为“/”的目标;2)模式规则的目标;3)MAKEFILES指定文件中的目标。 3.目标重建的条件需要满足下列条件之一:1)目标文件不存在;2)依赖项的时间比目标文件要晚;3)目标为伪目标。 4.makefile的目标可以有两种依赖:1)常规依赖;2)orderonly依赖。 5.文件名可以使用“”“?”“[]”“~”等通配符进行匹配。

lab-classic 实验 6 Makefile 规则进阶(2)

知识点: 1.

lab-classic 实验 7 Makefile 规则进阶(3)

知识点: 1.强制目标没有命令或依赖,且其目标是一个不存在的文件名,可以起到强制更新依赖其的目标的作用。 2.一个目标文件可以对应到多个规则目标,make会合并其依赖项,并以最后一次出现的规则命令作为重建命令,其它命令将被忽略。 3.同样的依赖文件和重建指令可以对应多条不同的目标,此时可以使用多目标规则来进行定义。 4.静态模式的规则存在多个目标,且不同目标可以根据模式,匹配不同的依赖文件。 5.双冒号规则可以让同一个目标文件对应多个规则时,每个规则都被独立执行和处理。

lab-classic 实验 8 Makefile 规则命令

知识点: 1.make使用$(SHELL)来执行规则命令,make会对$(SHELL)环境变量重新赋值,而非使用系统同名变量。 2.make可以使用j选项来进行多线程执行。 3.make可以使用``来忽略当前行命令的错误,使用i忽略所有错误,使用k跳过依赖项错误继续重建其它依赖项。 4.当make被异常结束时,会删除当前的目标文件。 5.使用define可以定义命令包,其本质与C语言的宏定义相似。

lab-classic 实验 9 Make 递归执行

知识点: 1.make的w选项可以打印make进入和离开目录的信息。 2.makefile中通常使用$(MAKE)递归执行下层makefile,以确保上下层的make程序一致。 3.递归执行过程中,顶层文件的变量默认不会传给下层文件。 4.可以使用export进行变量传递,也可以使用unexport取消传递。 5.当上层变量和下层变量定义有冲突时,下层优先级更高,也可以使用e选项取消下层的定义。

lab-classic 实验 10 Makefile 变量

知识点: 1.变量的定义及展开时机。 2.递归展开变量使用"="define定义,在使用时展开。 3.递归展开变量的定义与书写顺序无关,但也会产生难于调试和函数重复调用的问题。 4.直接展开变量使用":="定义,在make读入当前行时立即展开。=操作符可以对变量进行追加,展开方式与变量原始的赋值方式一致。?=操作符可以在变量未定义时进行赋值。 5.变量的替换引用可以将变量展开的内容进行字符串替换。 6.系统环境变量对makefile来说是可见的,但文件中的同名变量会覆盖环境变量,可以使用e选项避免覆盖。 7.命令行变量比makefile中的普通变量具有更高的优先级,可以使用override关键字防止makefile中的同名变量被命令行指定变量覆盖。 8.目标指定变量仅在包括依赖项在内的上下文可见,类似于局部变量,优先级高于普通变量。 9.自动化变量可以根据具体目标和依赖项自动生成相应的文件列表。

lab-classic 实验 11 Make 内建函数

知识点: 1.替换字符串函数:subst,patsubst#以单词为单位,而非以整个变量展开的字符串为单位 2.简化空格函数:strip#去前后空格,合并多个空格 3.字符串查找:findstring#若查找字符存在则返回查找字符串,否则返回空 4.过滤:filter,filterout#过滤和反向过滤指定的字符串 5.排序:sort#按首字母从小到大排列字符串 6.单词查找:word,wordlist,firstword#取出指定位置的单词 7.统计单词数量:words 8.单词连接:jion#将两个字符串的单词一一合并 9.取目录/文件:dir,notdir#获取文件的路径或者文件名 10.取前后缀:basename,suffix 11.加前后缀:addprefix,addsuffix 12.文件名匹配:wildcard#匹配指定路径下符合指定模式的文件,返回文件名 13.循环:foreach#遍历单词 14.条件控制:if 15.make控制:error,warning#产生错误或警告 16.函数调用:call#调用其它函数 17.调用shell:shell#调用shell命令 18.获取变量展开前的值:value#展开变量为其定义的文本格式 19.二次展开:eval#对指定变量展开为makefile规则的一部分 20.查询变量出处:origin

课程教师

darmac 共发布过 1 门课程

查看老师的所有课程 >
实验楼楼+
实验楼会员