Linux工具篇---make和makefile

原创 2016年06月02日 08:23:11

一、大体介绍

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 c编程:make Makefile工具的使用

最近在linux平台上写C代码,学习了make工具,在此做个小结,备忘,希望对新手有些帮助。 make的命令格式: make [选项] [宏] [目标] -f   指定makef...

linux下make和makefile用法

  • 2013-12-26 22:59
  • 21KB
  • 下载

make工具及makefile规则 |from document

1  makefile规则 makefile是一个make的规则描述脚本文件,包括四种类型行:目标行、命令行、宏定义行和make伪指令行(如“include”)。makefile文件中注释以“#”开...

make工具及makefile规则 |from document .

1  makefile规则 makefile是一个make的规则描述脚本文件,包括四种类型行:目标行、命令行、宏定义行和make伪指令行(如“include”)。makefile文件中注释以“#”开...

make工具及makefile文件

make工具及makefile文件 无论是在Linux还是在UNIX环境中,make都是一个非常重要的编译工具。无论是自己进行项目开发还是安装应用软件,都需要使用make工具。利用make工具,可以将...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)