Makefile 的引入
使用开发工具开发程序时,点点鼠标就可以对其进行编译了;但是内部机制是怎么样的呢?他们是怎么管理代码的?又是怎么决定编译哪一个文件的
实际上widows工具管理程序的内部工具也是Makefile,在Linux开发裸板程序的时候,也是使用Makefile来管理这些程序的。
接下来我们手动来管理这个文件和程序
a.c
#include <stdio.h>
int main()
{
func_b();
return 0;
}
b.c
#include <stdio.h>
void func_b()
{
printf("This is B \n");
}
编译:
gcc -o test a.c b.c
运行:
./test
结果:
This is B
gcc -o test a.c b.c 这条命令虽然简单,但是它完成的功能不简单。
Makefile 的规则
目标: 依赖1 依赖2...
[tab]命令
当依赖比目标文件新,则执行它们下面的命令。
test: a.o b.o
gcc -o test a.o b.o
a.o: a.c
gcc -c -o a.o a.c
b.o: b.c
gcc -c -o b.o b.c
- 只更新
a.c
,则会得到下面两条指令
gcc -c -o a.o a.c
gcc -o test a.o b.o
-
只更新
b.c
也是同理 -
如无更新,就会显示如下
make: 'test' is up to date.