Linux g++/gcc中makefile 的使用

本文介绍使用Makefile简化大型项目编译流程的方法。通过Makefile,开发者可以自动判断源码改动并仅编译更新部分,提高软件开发效率。文章包含一个C语言项目示例,展示了如何创建Makefile及执行编译。

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

有时候我们要一次运行多个文件,这时候我们可以使用Makefile!!!

◊make是什么?
   make是一个命令工具,是一个解释makefile中指令的命令工具。它可以简化编译过程里面所下达的指令,当执行 make 时,make 会在当前的目录下搜寻 Makefile (or makefile) 这个文本文件,执行对应的操作。make 会自动的判别原始码是否经过变动了,而自动更新执行档。
  
◊为什么要使用make?

假设,现在一个项目里面包含了100个程序文件,如果要对这个项目进行编译,那么光是编译指令就有100条。如果要重新进行编译,那么就又得像之前一样重新来一遍。这样重复且繁琐的工作实在是让我们很不爽啊。所以,用make来进行操作,间接调用gcc岂不是很方便?如果我们更动过某些原始码档案,则 make 也可以主动的判断哪一个原始码与相关的目标文件档案有更新过, 并仅更新该档案。这样可以减少重新编译所需要的时间,也会更加方便。

◊makefile又是干什么的?

makefile其实就是一个文档,里面定义了一系列的规则指定哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,它记录了原始码如何编译的详细信息! makefile一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。

先看一下makefile的规则:

目标(target):目标文件1 目标文件2

gcc -o 欲建立的执行文件 目标文件1 目标文件2

先举一个运行多个c语言文件。

首先下面是一个完整的 c语言文件,实现了统计用户输入的字符串中大小写字母的个数。
头文件test4.h

#pragma once

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>

源文件test4.c

#include "test5.h"

void test()
{
        char str[50] = {0};
        scanf("%s", str);
        int m = 0;
        int n = 0;
        pid_t p = fork();
        if(p < 0)
                printf("fork failed");
        if(p == 0)
        {
                for(int i = 0; i < sizeof(str); i++)
                {
                        if(str[i] <= 'z' && str[i] >= 'A')
                                m++;
                }


                printf("大写字母一共有");
                printf("%d", m);
                printf("个");
        }
        if(p > 0)
        {
                for(int i = 0; i < sizeof(str); i++)
                        if(str[i] >= 'a'  && str[i] <= 'z')
                                n++;
                printf("小写字母一共有:");
                printf("%d", n);
                printf("个");
        }
}

main.c

#include "test4.h"
                
int main()
{       
        test(); 
                
        return 0;       
}   

makefile文件

OBJS = test4.o main.o
main: $(OBJS)
        gcc -o re $(OBJS)
test4.o: test4.c test4.h
        gcc -c test4.c
main.o: main.c test4.h
        gcc -c main.c
clean:
        -rm -f re $(OBJS)

执行结果:

在这里插m入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值