0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

make、make all和make clean的使用方法

jf_Vqngj70R 来源:美男子玩编程 2024-01-05 12:32 次阅读

刚接触Linux,认为直接make后就完成了编译,没想到编译出的结果存在很大问题,原来是make、make all和make clean的使用方法不对。

1理论

make、make all和make clean 是在使用 make 构建系统时常见的命令。它们用于编译和管理项目中的代码。以下是每个命令的功能和区别:

1、make

功能

make 命令默认会查找当前目录下的 Makefile 或 makefile 文件,并执行该文件中的第一个目标(target)。

如果第一个目标依赖于其他目标,make 会先构建这些依赖目标。

使用场景

通常用于编译和链接项目中的代码。

如果没有指定目标,make 会尝试编译和链接整个项目。

示例

假设 Makefile 的第一个目标是 all,则运行 make 会自动执行 make all。

2、make all

功能

make all 通常用于编译和构建整个项目。

all 是一个常见的目标,一般在 Makefile 中明确定义,用于编译项目中的所有必要文件。

使用场景

在想要编译项目中的所有组件时使用。

这通常是项目构建的标准步骤。

示例

Makefile 中可能包含以下内容:

all: prog1 prog2
prog1: ...
prog2: ...

运行 make all 会依次构建 prog1 和 prog2。

3、make clean

功能

make clean 用于清理项目,通常会删除所有由之前的构建过程生成的文件,如对象文件(.o)、编译产物等。

使用场景

在需要清理构建环境(例如,重新从头开始构建项目)时使用。

示例

Makefile 中可能包含以下内容:

clean:
    rm -f *.o myProgram

运行 make clean 会删除所有对象文件和程序 myProgram。

所以:

make:默认构建项目,根据 Makefile 中的第一个目标执行。

make all:明确构建整个项目,通常是 Makefile 中定义的标准目标。

make clean:清理项目,删除之前构建过程中生成的文件,准备一个干净的构建环境。

2实践

让我们通过一个具体的例子来解释 make、make all 和 make clean 的功能和区别。

假设我们有一个简单的C语言项目,包含两个源文件:main.c 和 helper.c,以及一个头文件 helper.h。我们将创建一个 Makefile 来编译和管理这个项目。

目录结构如下:

/项目目录
|-- main.c
|-- helper.c
|-- helper.h
|-- Makefile

假设 main.c 内容如下:

#include
#include "helper.h"


int main() {
    printf("Hello, World!
");
    helperFunction();
    return 0;
}

helper.c内容如下:

#include
#include "helper.h"


void helperFunction() {
    printf("Helper function called.
");
}

helper.h内容如下:

void helperFunction();

一个简单的 Makefile 可能如下所示:

CC=gcc
CFLAGS=-I.
 
# 默认目标
all: myProgram
 
# 构建最终程序
myProgram: main.o helper.o
    $(CC) -o myProgram main.o helper.o
 
# 编译 main.c
main.o: main.c
    $(CC) -c main.c $(CFLAGS)
 
# 编译 helper.c
helper.o: helper.c
    $(CC) -c helper.c $(CFLAGS)
 
# 清理构建文件
clean:
    rm -f *.o myProgram

所以如何使用make、make all和make clean呢?步骤如下:

在包含这些文件的目录中打开终端。

运行 make 或 make all。

这将编译代码并生成 myProgram。

运行 ./myProgram 查看输出。

完成后,运行 make clean 清理构建文件。

说明:

make 或 make all

运行 make 或 make all 将编译 main.c 和 helper.c,然后链接这些对象文件以创建可执行文件 myProgram。

这是因为 all 是 Makefile 中定义的默认目标,而 make 默认执行第一个目标。

make clean

运行 make clean 将删除所有编译生成的对象文件(.o 文件)和可执行文件 myProgram。

这用于清理项目,确保下次构建时从干净状态开始。

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux
    +关注

    关注

    87

    文章

    11219

    浏览量

    208872
  • 命令
    +关注

    关注

    5

    文章

    678

    浏览量

    21981
  • 编译
    +关注

    关注

    0

    文章

    652

    浏览量

    32799
  • make
    +关注

    关注

    0

    文章

    16

    浏览量

    12511

原文标题:make、make all和make clean的使用方法

文章出处:【微信号:美男子玩编程,微信公众号:美男子玩编程】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    Hightec编译出错make: *** No rule to make target 'all'. Stop.

    make: *** No rule to make target 'all'.Stop.
    发表于 12-17 11:18

    Make Precise Base-Station Powe

    Make Precise Base-Station PowerMeasurements:Make Precise Base-StationPowerMeasurements:A highly
    发表于 09-23 23:03 12次下载

    GNU make中文手册 (pdf版下载)

    GNU make中文手册 (pdf版下载):GNU make中文手册.1ver - 3.81第一章:概述.71.1 Make之前基本知识:.71.1.1 概述71.1.2 准备知识81.2 GNU
    发表于 10-09 17:09 0次下载

    gnu make使用手册

    gnu make使用手册本文瑾献给所有热爱Linux的程序员!本文档版权所有,禁止用于任何商业行为。本文比较完整的讲述GNU make工具,涵盖GNU make的用法、语法。同时重点讨论如何为一
    发表于 10-09 17:10 0次下载

    gun make教程

    gun make教程.rar 关于本书 本文瑾献给所有热爱Linux的程序员!本中文文档版权所有。 本文比较完整的讲述GNU make工具,涵盖GNU make的用法、语法。同时
    发表于 03-10 13:50 0次下载

    Integrated Solutions Make Anal

    Integrated Solutions Make Analog Filter Design Easy Abstract: This application note explains
    发表于 11-08 17:40 1037次阅读
    Integrated Solutions <b class='flag-5'>Make</b> Anal

    C2make手册

    这份手册描述了由秦作坊的默之实现的Chinc2make(2.10.06-8版本,2010年8月1日)。当您进行C、C++、Gtk+、Gtkmm、Motif、wxWidget和openGL程序设计时,c2make工具可以根据源代码文件直接生成Makefile文件
    发表于 04-18 20:29 6次下载

    gnu make 中文手册

    介绍怎样写Makefile,并能够使用GNU 的make来管理自己的工程
    发表于 11-10 16:49 2次下载

    Make a difference with DragonBoa

    Make a difference with DragonBoard 410c-如何使用串口转USB打印功能讲解,我还上传了很多相关资料,感兴趣的小伙伴们可以去我上传的资料页面里看看。
    发表于 06-30 15:10 2次下载

    GNU_make中文手册

    电子专业单片机相关知识学习教材资料——GNU-Make
    发表于 08-23 16:23 0次下载

    GNU-make中文手册

    电子专业单片机相关知识学习教材资料——GNU-Make
    发表于 08-23 16:23 0次下载

    GNU_make中文手册

    电子专业单片机相关知识学习教材资料——GNU-Make
    发表于 08-23 16:23 0次下载

    GNU_Make_中文手册下载

    GNU_Make_中文手册下载
    发表于 10-30 09:20 12次下载
    GNU_<b class='flag-5'>Make</b>_中文手册下载

    Openwrt通用固件 make menuconfig配置教程

    Openwrt通用固件 make menuconfig配置教程
    发表于 09-07 12:01 4次下载

    GNU make中文手册

    电子发烧友网站提供《GNU make中文手册.pdf》资料免费下载
    发表于 06-05 13:22 0次下载