MAKEFILE学习笔记--简介
来源:互联网 发布:架空网络地板 编辑:程序博客网 时间:2024/06/16 18:40
MAKEFILE 学习笔记 —— 简介
一. 编译与链接
把源文件编译成中间代码文件,在 Windows 下也就是 .obj 文件,Linux 下是 .o 文件,即 Object File,这个动作叫做编译(compile)。编译时,编译器检查语法的正确性,函数与变量的声明的正确性。只有所有的语法正确,编译器就可以编译出中间目标文件,每个源文件对应一个目标文件。
把大量的 Object File 合成可执行文件,这个动作叫作链接(link)。链接时,主要链接全局变量与函数。
二. 编译规则
- 如果工程没有被编译过,则将所有的源文件进行编译并链接为目标程序。
- 如果该工程,有几个 c 文件被改变了,只重新编译这几个 c 文件 。
- 如果是头文件被改变了,则只重新编译引用这几个头文件的 c 程序。
三. MAKEFILE 格式
makefile 是通过文件之间相互依赖进行编译并链接的,即目标文件是由哪些文件生成的。格式如下:
target: files command
- target : 生成的目标文件
- files : 要生成 target 所需要的文件或是目标
- command:编译或链接命令
注:
command 命令一定以 TAB 键开始,并且前面不能有空格,若使用 vim在 /etc/vim/vimrc 文件中将 set expandtab 删除,它将导致格式错误。
代码例子:
aaa: main.o func.o gcc -o aaa main.o func.omain.o: main.c ex2.h gcc -std=c99 -c main.cfunc.o: func.c ex2.h gcc -std=c99 -c func.cclean: rm -fr *.o aaa
四. MAKE 的工作过程
- 找到当前目录下名为“makefile”或“MAKEFILE”文件
- 再“makefile”中找到第一个 target,在上面的代码中为 aaa,并把这个文件作为最终的文件
- 如果 aaa 不存在或者 aaa 所依赖的文件比如 main.o 比较新,那么会重新运行 gcc -o aaa main.o func.o 来生成 aaa
- 如果 aaa 所依赖的.o文件不存在,比如 main.o 不存在,则运行 gcc -std=c99 -c main.c 来生成 main.o,在运行 2 来生成 aaa
- 依次类推直到生成 aaa。
参考文献
[1] 陈浩 《跟我一起写Makefile》
0 0
- MAKEFILE学习笔记--简介
- Makefile 学习笔记(一) Makefile简介
- [001-Makefile-笔记] Makefile简介
- Makefile学习笔记
- makefile学习笔记
- makefile学习笔记(1)
- Makefile学习笔记
- MakeFile学习笔记一
- makefile学习笔记
- makefile学习笔记
- Makefile的学习笔记
- makefile学习笔记
- Makefile学习笔记
- Makefile学习笔记
- Makefile学习笔记
- makefile学习笔记
- Makefile学习笔记
- makefile学习笔记
- 圆角按钮
- 在Oracle数据库的表中插入图片的方法
- 运算符(一)
- 虚拟经济abc
- button的属性Image占用 用往button上添加了一个, 移除时候tag值找还蛮方便
- MAKEFILE学习笔记--简介
- ASIHTTPRequest
- 树型dp Codeforces633F The Chocolate Spree
- ActionBar 控件实现Tab页
- 卷积神经网络
- android apk 防止反编译技术第五篇-完整性校验
- iOS中KeyChain的使用
- ListView中同时开启多个倒计时
- iOS 日期字符串相互转换