make、makeall和makeclean的使用方法

原创 美男子玩编程 2024-01-05 12:01

点击上方蓝色字体,关注我们

刚接触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 prog2prog1: ...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!\n"); helperFunction(); return 0;}


helper.c内容如下:

#include#include "helper.h"
void helperFunction() { printf("Helper function called.\n");}


helper.h内容如下: 

void helperFunction();


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

CC=gccCFLAGS=-I. # 默认目标all: myProgram # 构建最终程序myProgram: main.o helper.o    $(CC) -o myProgram main.o helper.o # 编译 main.cmain.o: main.c    $(CC) -c main.c $(CFLAGS) # 编译 helper.chelper.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。

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


往期推荐
  • 详解CAN总线:CAN总线报文格式—过载帧

  • LabVIEW使用移位寄存器计算平均值

  • LabVIEW实现PCB电路板元器件匹配定位(实战篇—7)

  • Python Qt GUI设计:QSlider滑动条类(基础篇—16)

  • LabVIEW实现PCB电路板元器件匹配定位

       
点击阅读原文,更精彩~

美男子玩编程 多领域、有深度的开发者交流平台
评论 (0)
  •   电磁数据展示系统平台解析   北京华盛恒辉电磁数据展示系统平台是实现电磁数据高效展示、分析与管理的综合性软件体系,以下从核心功能、技术特性、应用场景及发展趋势展开解读:   应用案例   目前,已有多个电磁数据展示系统在实际应用中取得了显著成效。例如,北京华盛恒辉和北京五木恒润电磁数据展示系统。这些成功案例为电磁数据展示系统的推广和应用提供了有力支持。   一、核心功能模块   数据采集与预处理   智能分析处理   集成频谱分析、时频变换等信号处理算法,自动提取时域频域特征;
    华盛恒辉l58ll334744 2025-05-13 10:20 364浏览
  • 感谢面包板论坛组织的本次测评活动,本次测评的对象是STM32WL Nucleo-64板 (NUCLEO-WL55JC) ,该测试板专为LoRa™应用原型构建,基于STM32WL系列sub-GHz无线微控制器。其性能、功耗及特性组合经过精心挑选,支持通过Arduino® Uno V3连接,并利用ST morpho接头扩展STM32WL Nucleo功能,便于访问多种专用屏蔽。STM32WL Nucleo-64板集成STLINK-V3E调试器与编程器,无需额外探测器。该板配备全面的STM
    无言的朝圣 2025-05-13 09:47 158浏览
  • 在当下竞争激烈的 AI 赛道,企业高层的变动往往牵一发而动全身,零一万物近来就深陷这样的动荡漩涡。近日,零一万物联合创始人、技术副总裁戴宗宏离职创业的消息不胫而走。这位在大模型基础设施领域造诣颇深的专家,此前在华为云、阿里达摩院积累了深厚经验,在零一万物时更是带领团队短期内完成了千卡 GPU 集群等关键设施搭建,其离去无疑是重大损失。而这并非个例,自 2024 年下半年以来,李先刚、黄文灏、潘欣、曹大鹏等一众联创和早期核心成员纷纷出走。
    用户1742991715177 2025-05-13 21:24 111浏览
  •   基于 2025 年行业权威性与时效性,以下梳理国内知名软件定制开发企业,涵盖综合型、垂直领域及特色技术服务商:   华盛恒辉科技有限公司:是一家专注于高端软件定制开发服务和高端建设的服务机构,致力于为企业提供全面、系统的开发制作方案。在部队政企开发、建设到运营推广领域拥有丰富经验,在教育,工业,医疗,APP,管理,商城,人工智能,部队软件、工业软件、数字化转型、新能源软件、光伏软件、汽车软件,ERP,系统二次开发,CRM等领域有很多成功案例。   五木恒润科技有限公司:是一家专业的部队信
    华盛恒辉l58ll334744 2025-05-12 16:13 258浏览
  •   定制软件开发公司推荐清单   在企业数字化转型加速的2025年,定制软件开发需求愈发多元复杂。不同行业、技术偏好与服务模式的企业,对开发公司的要求大相径庭。以下从技术赛道、服务模式及行业场景出发,为您提供适配的定制软件开发公司推荐及选择建议。   华盛恒辉科技有限公司:是一家专注于高端软件定制开发服务和高端建设的服务机构,致力于为企业提供全面、系统的开发制作方案。在部队政企开发、建设到运营推广领域拥有丰富经验,在教育,工业,医疗,APP,管理,商城,人工智能,部队软件、工业软件、数字化转
    华盛恒辉l58ll334744 2025-05-12 15:55 334浏览
  • 文/Leon编辑/cc孙聪颖‍2025年1月至今,AI领域最出圈的除了DeepSeek,就是号称首个“通用AI Agent”(智能体)的Manus了,其邀请码一度被炒到8万元。很快,通用Agent就成为互联网大厂、AI独角兽们的新方向,迅速地“卷”了起来。国外市场,Open AI、Claude、微软等迅速推出Agent产品或构建平台,国内企业也在4月迅速跟进。4月,字节跳动、阿里巴巴、百度纷纷入局通用Agent市场,主打复杂的多任务、工作流功能,并对个人用户免费。腾讯则迅速更新腾讯元器的API接
    华尔街科技眼 2025-05-12 22:29 148浏览
  • ‌磁光克尔效应(Magneto-Optic Kerr Effect, MOKE)‌ 是指当线偏振光入射到磁性材料表面并反射后,其偏振状态(偏振面旋转角度和椭偏率)因材料的磁化强度或方向发生改变的现象。具体表现为:1、‌偏振面旋转‌:反射光的偏振方向相对于入射光发生偏转(克尔旋转角 θK)。2、‌椭偏率变化‌:反射光由线偏振变为椭圆偏振(克尔椭偏率 εK)。这一效应直接关联材料的磁化状态,是表征磁性材料(如铁磁体、反铁磁体)磁学性质的重要非接触式光学探测手段,广泛用于
    锦正茂科技 2025-05-12 11:02 300浏览
  • 在全球供应链紧张和国产替代需求推动下,国产存储芯片产业快速发展,形成设计到封测一体化的完整生态。北京君正、兆易创新、紫光国芯、东芯股份、普冉股份和佰维存储等六大上市公司在NOR/NAND Flash、DRAM、嵌入式存储等领域布局各具特色,推动国产替代提速。贞光科技代理的品牌紫光国芯,专注DRAM技术,覆盖嵌入式存储与模组解决方案,为多领域客户提供高可靠性产品。随着AI、5G等新兴应用兴起,国产存储厂商有望迎来新一轮增长。存储芯片分类与应用易失性与非易失性存储芯片易失性存储芯片(Volatile
    贞光科技 2025-05-12 16:05 200浏览
  •   军事领域仿真推演系统的战略价值与发展前瞻   北京华盛恒辉仿真推演系统通过技术创新与应用拓展,已成为作战效能提升的核心支撑。以下从战略应用与未来趋势展开解析:   应用案例   目前,已有多个仿真推演系统在实际应用中取得了显著成效。例如,北京华盛恒辉和北京五木恒润仿真推演系统。这些成功案例为仿真推演系统的推广和应用提供了有力支持。   一、核心战略应用   1. 作战理论创新引擎   依托低成本仿真平台,军事人员可高效验证新型作战概念。   2. 装备全周期优化   覆盖武器
    华盛恒辉l58ll334744 2025-05-14 16:41 23浏览
  •   舰艇电磁兼容分析与整改系统平台解析   北京华盛恒辉舰艇电磁兼容分析与整改系统平台是保障海军装备作战效能的关键技术,旨在确保舰艇电子设备在复杂电磁环境中协同运行。本文从架构、技术、流程、价值及趋势五个维度展开解析。   应用案例   目前,已有多个舰艇电磁兼容分析与整改系统在实际应用中取得了显著成效。例如,北京华盛恒辉和北京五木恒润舰艇电磁兼容分析与整改系统。这些成功案例为舰艇电磁兼容分析与整改系统的推广和应用提供了有力支持。   一、系统架构:模块化智能体系   电磁环境建模:基
    华盛恒辉l58ll334744 2025-05-14 11:22 51浏览
  •   电磁数据管理系统深度解析   北京华盛恒辉电磁数据管理系统作为专业的数据处理平台,旨在提升电磁数据的处理效率、安全性与可靠性。以下从功能架构、核心特性、应用场景及技术实现展开分析:   应用案例   目前,已有多个电磁数据管理系统在实际应用中取得了显著成效。例如,北京华盛恒辉和北京五木恒润电磁数据管理系统。这些成功案例为电磁数据管理系统的推广和应用提供了有力支持。   一、核心功能模块   数据采集与接入:实时接收天线、频谱仪等设备数据,兼容多协议接口,确保数据采集的全面性与实时性
    华盛恒辉l58ll334744 2025-05-13 10:59 272浏览
我要评论
0
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦