简单理解Makefile
来源:互联网 发布:剑网三咩萝捏脸数据 编辑:程序博客网 时间:2024/06/03 21:47
1. 从hello world开始,假设在hello.c中有如下代码:
#include <stdio.h>int main(int argc, char* argv[]){ printf("hello world.\n"); return 0;}把hello.c编译成可执行程序hello,可简单分成下面两步:
gcc -c hello.c #把.c生成.o, -c表示只编译不链接gcc -o hello hello.o #把.o文件生成可执行程序。-o表示生成可执行程序,后面跟自定义的可执行程序的名字
上述过程在makefile中包含两层依赖关系和两条命令:
hello : hello.o #hello由hello.o生成,所以hello依赖于hello.o, #依赖关系用分号隔开,左边的叫做目标(target),右边称为依赖(prerequisites)hello.o : hello.c当依赖文件被修改时,则执行命令(command),命令跟在依赖关系的下面一行:
hello : hello.ogcc -o hello hello.ohello.o : hello.cgcc -c hello.c #片段1
执行make或make hello命令,就可以得到可行性程序hello了。
综上所述,makefile就是一个简单公式:
target ... : prerequisites ... command
2.makefile中的隐式规则,.o文件对.c文件的规则会自动执行,所以片段1可以写成:
hello : hello.o gcc -o hello hello.o #片段2
3. makefile中的3个符号$@,$^,$<。
$@表示目标,$^表示所有的依赖文件,$<表示第一个依赖文件,则片段2可以表示成:
hello : hello.o # 片段3gcc -o $@ $^ # $@即hello,$^即hello.o,此处只有一个依赖文件,也可以用$<替代$^, # 即gcc -o $@ $<,多个依赖文件时只能用$^4.makefile中变量的使用,比如hello.c同时用到了a.c,b.c或多个源文件,则片段3可写成:
objs = hello.o a.o b.ohello : $(objs) # objs即自定义的变量名,引用时$加小括号扩起来$(objs) gcc -o $@ $^ # 片段45.再定义两个变量,片段4可改写成:
CC = gccTARGET = helloobjs = hello.o a.o b.o$(TARGET) : $(objs) $(CC) -o $@ $^6.makefile中换行用Tab键!
阅读全文
1 1
- Makefile的简单理解
- 简单理解Makefile
- Makefile文件的简单理解
- Makefile文件的简单理解
- Makefile 理解
- Makefile 理解
- makefile理解
- 理解Makefile
- Makefile 理解
- 简单理解makefile与程序的编译联接
- 简单Makefile
- 简单Makefile
- 简单makefile
- 简单Makefile
- Makefile 理解(1)
- Makefile 理解(2)
- Makefile 理解(3)
- 对makefile的理解
- 51nod 1244 莫比乌斯函数之和
- Java并发编程---CopyOnWriteArrayList
- 概率论想到量子力学
- Python爬虫下载嗅事百科出现BadStatusLine错误
- LeetCode【4】Median of Two Sorted Arrays
- 简单理解Makefile
- 前端面试题(数组中求和)
- XML解析方式
- 继承
- HDU_3555_Bomb
- CSS书写规范以及命名规则
- 阴影box-shadow详解
- 常用算法分析与设计
- 红黑树