5.22上午 外教 linux 听力812

Makefile那些稀奇古怪的符号

这些稀奇古怪的符号是前面隐式规则中出现过,单独拎出来是因为我们会经常用到它们。

这些符号也就是我们常说的自动变量:

[email protected] :规则中的目标集

$^ :规则中的所有先决条件

$< :表示规则中的第一个先决条件

再来说说$VAR和$$VAR的区别:

makefile文件中的规则绝大部分都是使用shell命令来实现的,这里就涉及到了变量的使用,包括makefile中的变量和shell命令范畴内的变量。在makefile的规则命令行中使用$var就是在命令中引用makefile的变量,这里仅仅是读取makefile的变量然后扩展开,将其值作为参数传给了一个shell命令;而$$var是在访问一个shell命令内定义的变量,而非makefile的变量。如果某规则有n个shell命令行构成,而相互之间没有用‘;‘和‘\‘连接起来的话,就是相互之间没有关联的shell命令,相互之间也不能变量共享。

Makefile之伪目标

使用其原因一:避免和同名文件冲突

在现实中难免存在所定义的目标与所存在的目标是同名的,采用Makefile如何处理这种情况呢?Makefile中的假目标(phony target)可以解决这个问题。

假目标可以使用.PHONY关键字进行声明,对于假目标,可以想象,因为不依赖于某文件,make该目标的时候,其所在规则的命令都会被执行。

如果编写一个规则,并不产生目标文件,则其命令在每次make 该目标时都执行。

例如:

clean:

rm *.o temp

因为"rm"命令并不产生"clean"文件,则每次执行"make clean"的时候,该命令都会执行。如果目录中出现了"clean"文件,则规则失效了:没有依赖文件,文件"clean"始终是最新的,命令永远不会执行;为避免这个问题,可使用".PHONY"指明该目标。如:

.PHONY : clean

这样执行"make clean"会无视"clean"文件存在与否。

已知phony 目标并非是由其它文件生成的实际文件,make 会跳过隐含规则搜索。这就是声明phony 目标会改善性能的原因,即使你并不担心实际文件存在与否。

完整的例子如下:

.PHONY : clean

clean :

rm *.o temp

时间: 2024-10-30 12:51:33

5.22上午 外教 linux 听力812的相关文章

5.25上午 外教专业课 听力

3.配置TFTP服务器 sudo gedit /etc/default/tftpd-hpa 将原来的内容为: # /etc/default/tftpd-hpa TFTP_USERNAME="tftp" #TFTP_DIRECTORY="/var/lib/tftpboot"  #修改为自己需要的路径,与上面创建的目录一致 TFTP_ADDRESS="0.0.0.0:69" #TFTP_OPTIONS="--secure"  #可

5.23上午 外教课 linux 听力

看一个例子就明白了.新建一个Makefile,内容如下: 复制代码 ifdef DEFINE_VRE VRE = "Hello World!" else endif ifeq ($(OPT),define) VRE ?= "Hello World! First!" endif ifeq ($(OPT),add) VRE += "Kelly!" endif ifeq ($(OPT),recover) VRE := "Hello World

2017.5.22上午学习内容

听外教老师进行专业课讲解,并看了联考分析

5.3上午 外教课 听力

[  OK  ] workgroup = WORKGROUP 设Samba Server 所要加入的工作组或者域. server string = Samba Server Version %v Samba Server 的注释,可以是任何字符串,也可以不填.宏%v表示显示Samba的版本号. security = user 1.share:用户访问Samba Server不需要提供用户名和口令, 安全性能较低.2. user:Samba Server共享目录只能被授权的用户访问,由Samba

5.15 上午 外教 专业课

Linux命令帮助: 刚才说的在未打任何命令的情况下按两次TAB键会显示所有可用的命令,这种方法不常用,常用的方法是help ,用法是 :命令  --help ,常用的是man帮助(即手册manual),用法是:man  命令,还有一种帮助方法是info ,用法是info 命令,其实这种不太常用,因为正常情况下man已经可以解决绝大部分问题了. 另外由于使用man或者是info命令时,会出现多个页面,有时候多的不想看,这时候按q退出帮助,而且由于现实的信息很多,您如何快速找到自己想要的呢,这时,

Linux 第22天 自习 Linux 任务计划

时间: 20180809 Linux 任务计划 一次性执行任务,即设定在未来某个指定的时间执行某个命令 周期性执行任务,设定后会在每隔多久的某个时间执行某个任务 at 一次性执行任务 是一个服务,如果想要使用它需要将服务启动atd.services -l 列出当前系统的一次性任务计划相当于atq -d 删除某个任务,相当于atrm -c job 显示某任务详情 -f 把at要执行的所有任务放置于文件中,让at读取此文件作为要运行的任务 at 4pm + 3 days 三天后的下午4点 at -t

2017.3.22上午学习内容

做了一套英语试题,并复习了第四单元单词和第八单元词汇,对买的课程进行分类总结

5.22下午 外教课 听力

例:more install.log(12)分页显示文件内容:less 可向上翻页空格 翻页回车 换行q 退出pageup 向上翻页上箭头 向上翻行/关键词 查找关键词n 下一处关键词例:less install.log(13)显示文件前几行:head-n 指定行数默认显示前十行例:head -n 7 install.log(14)显示文件后几行:tail-n 指定行数-f 动态显示文件末尾内容例:tail -fn 7 install.log(15)生成链接文件:ln-s 软连接默认生成硬链接区

6.5上午 外教专业

另外有些用户反映在uboot下看到的内存是128M,那么这个uboot应该是我们最早发布的一个版本,到我们的http更新一下代码吧,这里只是显示为128,实际上还是256. FAQ9: 做完烧入的最后一步..烧写QT下去之后.并且修改一下内核的启动参数,让内核不再挂载cramfs格式的mtdblock0,转而挂载ubifs格式的mtdblock1:重启板子之后出现了 Starting Qtopia, please waiting... Please press Enter to activate