Linux系统下make工具Makefile总结!

主要介绍在Linux系统下如何通过Makefile进行文件的处理

我们在进行C语言以及其它项目时,可能会创建多个文件来完成整个功能的实现,而在Linux系统下的make工具可以很有效的将我们写好的源文件通过makefile执行批处理!本文主要通过C语言实例进行。

一. make工具

  • Makefile基本介绍

Makfile是一种纯文本的编译脚本,在其中可以指定需要编译哪些文件,哪些先编译,哪些后编译,哪些需要重新编译,最终需要生成怎么样的应用程序;
文件命名通常是以Makefile或者makefile

  • 使用非标准命名

如果使用非标准命名的makefile,必须用命令开关"-f" 或 “-file”

  • make命令

用来解释Makefile脚本,并根据脚本中的指定内容,进行操作

  • 三个概念:比如xxx.c文件通过处理变成xxx.o文件

目标文件:你所要生成的文件,如xxx.o文件
依赖文件:就是所说的源文件,xxx.c文件
处理动作:xxx.c文件通过预处理、编译、汇编生成了xxx.o文件

二.工具的使用方法(linux下make以及makefile(一)

  1. 第一步:分别创建main.c 和 1.c 和 2.c文件
//main.c文件
#include <stdio.h>
#include "1.h"

int main() {
    fun1();
    return 0;
}
//1.c文件
#include<stdio.h>

void fun1() {
    printf("fun1()\n");
}
#ifndef _1_H
#define _1_H

void fun1();

#endif
  1. 第二步:新建一个Makefile文件
app:main.o 1.o 
	gcc main.o 1.o -o app
main.o:main.c
    gcc -c main.c -o main.o
1.o:1.c
    gcc -c 1.c -o 1.o

进行执行
在这里插入图片描述
生成了目标文件和过度文件
在这里插入图片描述
3. 第三步:进行升级操作,变量替换
通过变量名称替换:

OBJS=代替要生成的目标文件【可以自定义】,但是需要$符号来引用
$^ :表示所有的依赖文件
$@:所有的目标文件
$<:代表第一个依赖文件
%.o:%.c:表示所有的.o和.c文件

  1. 进行$替换后如下
app:main.o 1.o 
	gcc main.o 1.o -o app
main.o:main.c
    gcc -c $< -o $@
1.o:1.c
    gcc -c $< -o $@
  1. 再升一级,通过%来替换
app:main.o 1.o 
	gcc main.o 1.o -o app
%.o:%.c
    gcc -c $< -o $@
  1. 进行所有的替换
TARGET = app
OBJS = main.o 1.o
CC == gcc

$(TARGRT):$(OBJS)
	$(CC) $^ -o $@
%.o:%.c
    $(CC) -c $< -o $@

7.最后添加一条指令,将多余文件清楚

clean:
	rm -f $(OBJS) $(TARGET)
  1. 最终修改之后的版本:这样的操作可以用最小的代价换取最大的成效
TARGET = app  //将目标文件用TARGET替代
OBJS = main.o 1.o  //将目标文件所依赖的文件用OBJS替代
CC == gcc	//用CC替代编译器gcc

$(TARGRT):$(OBJS)     //$ 表示引用
	$(CC) $^ -o $@    //$^表示所有的依赖文件、$@表示目标文件
%.o:%.c
    $(CC) -c $< -o $@   //$<表示第一个依赖文件
clean:
	rm -f $(OBJS) $(TARGET)  //清除没用的中间文件

三.总结

Makefile可以减轻我们许许多多的工作量,需要我们在实践磨炼中与更加熟练的运用,使用时,一定要分清目标文件和依赖文件的关系,以及各种变量所表示的意义

参考文档:
1.https://blog.csdn.net/wangqingchuan92/article/details/92832544

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值