[Linux]Makefile入门

关于make命令,执行make命令的时候,系统会在当前目录下找名为Makefile或makefile的文件进行编译,如果你的makefile是别的名字的话,可以使用make –f filename来指定你的makefile。

 

直接写一个简单的makefile吧:

假设有一个源文件:main.c

那么用gcc编译它的命令是:gcc main.c –o main

我创建一个名为makefile的文件,makefile的基本格式为“目标:依赖 命令”

makefile内容为:

main : main.c

gcc main.c –o main

在终端执行make命令就可以得到main文件了

 

假设我有a.cb.c, main.c三个源文件,最终要编译成一个名为main的可执行文件

则makefile内容为

main : a.o b.o main.o

gcc a.o b.o main.o -o main

main.o : main.c

gcc -c main.c

b.o : b.c

gcc -c b.c

a.o : a.c

gcc -c a.c

# 用".PHONY {目标名}"定义一个伪目标

# 用"make {目标名}"执行该伪目标

.PHONY : clean

clean :

@rm -f main *.o

@echo 'clean'

此时执行make命令,终端会显示系统执行的每条命令,如果你不想系统显示它执行的命令,在每条命令的前面加上“@”即可。

 

如果我想清除掉我编译后的文件,可以rm命令,当然我们也可以清除的功能写入到makefile里边。

makefile提供了一个伪目标的功能,可以为你的makefile提供额外的功能。

下面是提供了clean功能的makefile

main : a.o b.o main.o

@gcc a.o b.o main.o -o main

@echo ok

@gcc -c main.c

b.o : b.c

@gcc -c b.c

a.o : a.c

@gcc -c a.c

# 用".PHONY {目标名}"定义一个伪目标

# 用"make {目标名}"执行该伪目标

.PHONY : clean

clean :

@rm -f main *.o

@echo clean

执行make clean即可进入clean的功能

 

此外,makefile提供了系统默认的自动化变量

$^:代表所有依赖文件

$@:代表目标

$<:代表第一个依赖文件

所以我们可以用

gcc $^ -o $@

代替刚刚makefile中的

gcc a.o b.o main.o -o main

 

关于makefile的附件:http://pan.baidu.com/share/link?shareid=135850&uk=3238766853

转载于:https://www.cnblogs.com/cateats2016/archive/2012/12/02/2798401.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值