此文编写主要参考韦东山老师教程和《跟我一起写makefile》
一、什么是make?
–make是一个应用程序
–解析源程序之间的的依赖关系
–根据依赖关系自动维护编译工作
–执行宿主操作系统的各种命令
二、什么是makefile?
–makefile 是一种描述文件
–定义一系列的规则来指定源文件编译的先后顺序
–拥有特定的语法规则,支持函数定义和函数调用
–能够直接集成操作系统中的各种命令
三、为什么需要makefile?
(1)对于gcc -o test a.c b.c这条命令虽然简单,但是它完成的功能不简单。 我们来看看它做了哪些事情。
我们知道.c程序 --> 得到可执行程序,它们之间要经过四个步骤:
预处理(preprocessing)=> .i arm-linux-cpp
编译(compilation)==> .s cc1
汇编(assembly)==> .o arm-linux-as
连接(linking)==> OBJ (linux上表现为ELF) arm-linux-ld
我们经常把前三个步骤统称为编译了。我们具体分析gcc -o test a.c b.c这条命令它们要经过下面几个步骤:
对于a.c执行:预处理 编译 汇编 的过程,a.c -->xxx.s -->xxx.o 文件。
对于b.c执行: