iphone-命令行编译之make和Makefile(一)

瘦欲@ 提交于 2020-03-29 00:51:44

一、概念

1.makefile

makefile定义了一些规则,来表明文件的相互依赖性,并运行命令,达到--自动化编译

比如指定哪些文件先编译,哪些文件后编译,及哪些文件需要重新编译

2.make

命令工具,用来解释makefile中的规则和指令

make命令执行,需要一个makefile文件,来告诉make命令需要如何编译和链接程序

规则:

1)如果工程没有编译过,则编译所有.m文件并链接

2)如果工程中某几个.m文件被修改,只编译修改的.m文件,并链接

3)如果头文件被修改,则引入这几个头文件的.m文件都需要重新编译,并链接

3.编译(compile)

把源文件.m文件,转变成(Object File)中间代码文件.o,这个动作叫编译

编译时,编译器需要检查语法,函数和变量是否被声明

4.链接(link)

 把大量的Object File文件合成可执行文件,这个动作叫链接

链接时,链接器去.o文件中链接函数是否实现,和全局变量。如果找不到,报链接错误码

中间文件打包变成库文件(Archive File文件).a,window下为.lib文件

 

二、Makefile规则

目标文件:依赖文件(tab键)命令
目标文件:依赖文件(tab键)命令

上面的规则,表明文件的依赖关系

1.目标文件:

可以是:.o文件;可执行文件;标签,即“伪目标”

第一个目标文件就是工程的“终极目标”

2. 依赖文件:

生成目标文件所需要的文件或目标

3.命令:

make需要执行的命令(任何shell命令),目标文件的生成规则定已在命令里

注意:命令必须用(tab键)开头,如果和“目标文件:依赖文件”同行,则用分号隔开

 

三、make工作过程

1.默认的,输入make命令

2.先查找当前目录下“Makefile”或“makefile”文件

3.如果有,查找文件中规则定义的第一个目标文件,并把它做为工程的最终目标

4.如果最终目标不存在,或它的依赖文件修改时间比最终目标文件新,那么执行后面定义的命令,生成最终可执行文件

5.如果最终目标的依赖文件不存在,make会试图在下面的规则里查找这些依赖文件,并把它最为目标生成它,如果没法生成,则退出

6.依上类推

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!