Ubuntu下学习Makefile

Ubuntu下学习Makefile



前言

一个工程中的源文件不计其数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为 makefile就像一个Shell脚本一样,也可以执行操作系统的命令。

一、Make简介

Make工程管理器也就是个“自动编译管理器”,这里的“自动”是指它能够根据文件时间戳自动发现更新过的文件而减少编译的工作量,同时,它通过读入Makefile文件的内容来执行大量的编译工作。
Make将只编译改动的代码文件,而不用完全编译。

二、基本结构

1.Makefile是Make读入的唯一配置文件

1、由make工具创建的目标体(target),通常是目标文件或可执行文件
2、要创建的目标体所依赖的文件(dependency_file)
3、创建每个目标体时需要运行的命令(commend)
注意:命令行前必须是一个“TAB键”,否则编译错误
为: *** missing separator. Stop.


2.Makefile格式

target: dependeney_files
<‘TAB’> command
TAB一定要用按键
代码如下(示例):

hello.o : hello.c hello.h
gcc -c hello.c -o hello.o

3.Makefile变量

target: dependeney_files
<‘TAB’> command
TAB一定要用按键
代码如下(示例):

hello.o : hello.c hello.h
gcc -c hello.c -o hello.o

三、Makefile实例

创建f1.c文件

#include <stdio.h>
void print1()
{
	printf("i'm f1.c\n");
}

创建f2.c文件

#include <stdio.h>
void print2()
{
	printf("i'm f2.c\n");
}

创建head.h文件

void print1();
void print2();

创建main.c文件

#include "head.h"
int main()
{
	print1();
	print2();
	return 0;
}

创建Makefile文件

test:f1.o f2.o main.o
	  gcc f1.o f2.o main.o -o test
f1.o:f1.c
	  gcc -c f1.c -o f1.o
f2.o:f2.c
	  gcc -c f2.c -o f2.o
main.o:main.c
	  gcc -c main.c -o main.o

结果:
在这里插入图片描述
扩展
在这里插入图片描述
在这里插入图片描述
如果存在clean这个文件
我们需要加入伪目标
在这里插入图片描述

总结

make是一个命令工具,它解释Makefile 中的指令。在Makefile文件中描述了整个工程所有文件的编译顺序、编译规则。以上是今天所学,下午再更深入的了解make吧,再见。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值