Linux工具篇---make和makefile
2016-06-02 08:23
381 查看
一、大体介绍
make是一条指令,而makefile是一个文件(当前目录下的)make命令执行的时候,需要一个makefile文件,以告诉make命令需要怎样的去编译和链接程序(自动完成,就不用手动gcc繁琐的一个一个去执行了)
二、依赖关系和依赖方法
1、依赖关系
makefile就是这个依赖关系,window下编译器就自己完成了这个工作简单的例子:
你上大学,依赖于父母,父母依赖与公司,公司依赖与消费者,消费者依赖与消费需求、依赖这一整套的逻辑关系,你就有钱上大学了
2、依赖方法
澄清这种依赖关系,根据依赖关系达到某种目的,但是光凭空的说我依赖与你是远远不够的,必须还要有依赖方法,这样才能够达到某种目的3、关系的表达可以多种多样
举一个简单的例子:test.c生成可执行程序的过程(1)站在编译器的角度:
test.c生成的目标test.i,teset.i生成test.s,test.s生成test.o,test.o生成test(2)站在可执行程序的角度:
test的生成依赖于test.o,test.o依赖于test.s,test.s依赖于test.i,test.i依赖于test.c三、怎么使用makefile
例子:有一个工程,里面有三个文件main.c、test.h、test.c,main.c包含有test.h下面我们就用makefile描述整个工程的依赖关系和依赖方法:
vim一个makefile或者Makefile,写入下面内容:
main :test.o main.o(//(第一行是描述依赖关系,下一行必须是方法) 依赖方法:(必须是方法)TABLE gcc -o main test.o main.c (必须以Tab开头) test.o:test.s gcc -c test.s -o test.0 test.s:test.i gcc -S test.i -o test.s test.i:test.c gcc -E test.c -o test.i //现在没有maon.o main.o:main.s gcc -c main.s -o main.o main.s : main,i gcc main.i -o main.s main.i:main.c gcc main.c -o main.i写完后,直接退出保存,然后make即可
四、makefile伪目标
上面makefile在执行的过程中生成了许多的临时文件,那么怎么清理它们,这个时候就需要伪目标1、clean
编写一下程序在上面的makefile后面:.PHONY:clean clean: -rm -f *i *s *o main
直接执行make clean命令就完成了清理工作
2、说明:
(1)伪目标.PHONY是一个声明,clean为伪目标,main test.i main.i等都是都是目标文件在当前目录生成临时文件
PHONY修饰之后,clean伪目标的依赖列表为空
目标文件生成目标,但并不会生成目标文件值,同时又会执行依赖方法
(2)为什么可以make clean就直接清理了
make默认生成第一个可执行文件
要生成其他的目标,就要要制定声明(例如:其他的clean)
3、其实可以写个精简版的
main: main.c test.c gcc -o main.c tset.cl .PHONY:clean//(声明伪目标) clean: -rm -f main
4.其他
(1)依赖方法前面加上@,不打印依赖方法(2)#是注释
相关文章推荐
- Linux/Unix环境下的Make和Makefile详解
- Linux Makefile与Shell的问题
- Python实现生成简单的Makefile文件代码示例
- (转)自动生成 Makefile 的全过程详解
- u-boot的Makefile分析
- 关于linux模块驱动简单的Makefile
- 编译单个驱动的Makefile文件。
- makefile完全教程
- Linux内核Makefile文件
- Linux内核的Makefile
- Makefile 文件的相关知识(2)
- 使用AutoMake轻松生成Makefile
- 学习写 Makefile
- makefile之环境变量MAKEFILES
- 一起写 Makefile
- u-boot的Makefile分析435557749
- MakeFile
- MakeFile详解
- Linux内核makefile解析
- linux 2.6内核makefile分析