MAKEFILE学习笔记--简介
2016-03-02 11:08
495 查看
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.o main.o: main.c ex2.h gcc -std=c99 -c main.c func.o: func.c ex2.h gcc -std=c99 -c func.c clean: 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》相关文章推荐
- Linux socket 初步
- Linux Kernel 4.0 RC5 发布!
- linux lsof详解
- linux 文件权限
- Linux 执行数学运算
- 10 篇对初学者和专家都有用的 Linux 命令教程
- Linux 与 Windows 对UNICODE 的处理方式
- Ubuntu12.04下QQ完美走起啊!走起啊!有木有啊!
- 解決Linux下Android开发真机调试设备不被识别问题
- 运维入门
- 运维提升
- Linux 自检和 SystemTap
- Ubuntu Linux使用体验
- c语言实现hashmap(转载)
- Linux 信号signal处理机制
- linux下mysql添加用户
- Scientific Linux 5.5 图形安装教程
- 数据库链接字符串查询网站