Linux-makefile

本文介绍Makefile的基础概念及其在自动化编译中的应用。通过一个简单的实例,展示如何使用Makefile来管理项目的编译流程,提高开发效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

makefile

make是一个命令工具,它解释Makefile 中的指令(应该说是规则)。在Makefile文件中描述了整个工程所有文件的编译顺序、编译规则。Makefile 有自己的书写格式、关键字、函数。像C 语言有自己的格式、关键字和函数一样。而且在Makefile 中可以使用系统shell所提供的任何命令来完成想要的工作。Makefile(在其它的系统上可能是另外的文件名)在绝大多数的IDE 开发环境中都在使用,已经成为一种工程的编译方法。

makefile带来的好处就是——“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。

使用

makefile的命令:
目标: 依赖文件
(tab) 命令

这是一个文件的依赖关系,也就是说,这一个或多个的目标文件依赖于其后的依赖文件,其生成规则定义在命令中。注意:命令之前必须至少有一个tab,否则make失败。
简单来说,我们有一个.c文件,需要用它来生成一个.o文件,就可以用makefile编写:
.o文件:.c文件
gcc -c .c -o .o
大致规则是这样,如果一个工程下有非常多的文件需要这样编译,我们用一个makefile编写就可以一次到位了。

实例

首先,我们建立一个工程目录,在其下创建四个文件,
以下为例:
这里写图片描述

我们创建了四个文件,add.c,add.h,sub.c,sub.h在建立一个main.c测试。
如果不使用makefile,我们就要一步步手动编译每一个文件,如果文件量巨大的话,显然不合适。
创建一个Makefile,vim打开它
编写如下:

main:add.o sub.o main.o
    gcc add.o sub.o main.o -o main

add.o:add.c
    gcc -c add.c -o add.o
sub.o:sub.c
    gcc -c sub.c -o sub.o
main.o:main.c
    gcc -c main.c -o main.o

在make一下,这些需要链接在一起的文件就会被成功链接起来。
这里写图片描述

如果其中要修改某部分代码,之后在make一下,就会成功更新,并且,只重新编译修改过的文件,不会全部重新编译。

用makefile简单做了一个加减乘除的代码:
这里写图片描述

#include <stdio.h>

#include "add.h"
#include "sub.h"
#include "mul.h"
#include "div.h"
int main()
{

    printf("add=%d\n",add(3,7));

    printf("sub=%d\n",sub(3,7));

    printf("div=%d\n",div(10,2));

    printf("mul=%d\n",mul(3,7));
}

运行结果:
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值