[ARM Linux入门与实践] 请教MAKEFILE

[复制链接]
 楼主| sxggj 发表于 2009-3-12 11:59 | 显示全部楼层 |阅读模式
这是一个MAKEFILE的第一条指令,ALL:是目标,不明白后面不是跟着.o文件,而是跟着好多,MAKE命令,谁能解释一下,这堆MAKE是用来干什么的
箫笑 发表于 2009-3-12 13:23 | 显示全部楼层

re

这个是我自己总结的:<br />makefile的规则:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;target&nbsp;...&nbsp;:&nbsp;requisites&nbsp;...<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;command<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;...<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;...<br />第一行称为规则,第二行是执行规则的命令。<br /><br />target是一个目标文件,可以是Object&nbsp;File,也可以是执行文件;requisites是生成这个target的所有依赖文件;command是完成这个操作的shell命令。<br /><br />target也可以当作伪目标,此时command为空,用于一个项目中要生成多个相互独立的目标文件。这些需要生成的独立的目标文件全部当作target伪目标的依赖文件,却没有实际生成它的命令,但make依然会试图更新所有依赖文件,这样就达到了预期的目的。<br /><br />target还可以是一个标签,当其作为标签时,冒号后面不写依赖文件。所以这时它不是一个文件,只不过是一个动作的名字,像C语言中的lable一样,make不会自动去找文件的依赖性,也就不会自动执行其后所定义的命令。要执行其后的命令,就要在make命令后明显得指出这个lable的名字。利用这个特性,可以在一个makefile中定义不用的编译或是和编译无关的命令,比如程序的打包,备份,删除中间文件等等,需要完成这些操作时,执行一下“make&nbsp;(lable)”就可以了。<br /><br />所以你说的all是作为伪目标来用的,也就是最后一种情况,那堆make才是真正希望执行的命令。
未来是梦 发表于 2009-3-12 13:30 | 显示全部楼层

re

make&nbsp;-C&nbsp;sysinit&nbsp;&nbsp;&nbsp;&nbsp;#进入目录sysinit找Makefile,make<br /><br />
 楼主| sxggj 发表于 2009-3-12 13:36 | 显示全部楼层

谢谢LS,MAKEFILE不太熟悉,但查了一下

规则好像说,像这种.PHONY&nbsp;声明的伪目标是不应该放在开头的呀,,难道下图中的.EXPORT_ALL_VARIABLES是怎么回事,而且前面还个&quot;.&quot;
您需要登录后才可以回帖 登录 | 注册

本版积分规则

230

主题

1397

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部

230

主题

1397

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部