Linux工具篇---make和makefile
来源:互联网 发布:adobe网页制作软件 编辑:程序博客网 时间:2024/06/10 19:55
一、大体介绍
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.sgcc -c test.s -o test.0test.s:test.igcc -S test.i -o test.stest.i:test.cgcc -E test.c -o test.i//现在没有maon.omain.o:main.sgcc -c main.s -o main.omain.s : main,igcc main.i -o main.smain.i:main.cgcc main.c -o main.i写完后,直接退出保存,然后make即可
四、makefile伪目标
上面makefile在执行的过程中生成了许多的临时文件,那么怎么清理它们,这个时候就需要伪目标
1、clean
编写一下程序在上面的makefile后面:
.PHONY:cleanclean:-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.cgcc -o main.c tset.cl.PHONY:clean//(声明伪目标)clean:-rm -f main
4.其他
(1)依赖方法前面加上@,不打印依赖方法
(2)#是注释
- Linux工具篇---make和makefile
- Linux Make工具和Makefile
- Makefile和make工具
- linux之make和makefile
- Linux中的make和makefile
- Linux程序设计:make和makefile
- Linux下make和makefile
- Linux的Makefile和Make
- linux中的‘make’和‘makefile’
- Linux学习 [2] vi编辑器 gcc工具链 make和Makefile gdb调试工具
- make工具 —— make命令和makefile文件
- make工具及makefile
- Linux环境下make和makefile详解
- Linux环境下make和makefile详解
- linux程序设计:make命令和makefile文件
- linux中make和Makefile的详解
- Linux学习(Make和Makefile)
- linux c编程:make Makefile工具的使用
- MyBatis-搭建MyBatis开发环境二(MyEclipse版)
- Linux:yum安装软件工具
- Android网络基础之HttpClient与HttpURLConnection
- ViewState EnableViewState 禁用与使用心得
- 已读博客文章
- Linux工具篇---make和makefile
- 第十三周项目2-动物这样叫(3)
- 基因数据处理40之bedtools的安装和使用
- 非对称加密原理解析
- 第十四周项目四 数组类模板
- CentOS7下Firewall防火墙配置用法详解
- 【CSS】CSS+HTML‘VS’CSS+XML
- GOT S06E06
- me软件记录