Linux常用make命令

一、简介

make 是一个常用的命令行工具,用于自动化构建和管理软件项目。它通常用于编译源代码、生成可执行文件或库,并处理项目中的依赖关系。
make 命令使用一个名为 “Makefile” 的文件来定义构建规则和目标。Makefile 中包含了一系列规则,每个规则指定了目标文件的依赖关系和构建命令。当运行 make 命令时,它会读取 Makefile 并根据规则自动执行所需的构建步骤。
使用 make 命令的一般语法是:

make [目标]

其中,目标是 Makefile 中定义的一个或多个目标名称。如果未指定目标,默认会执行 Makefile 中的第一个目标。
make 命令会检查目标文件和依赖文件的时间戳,以确定哪些文件需要重新构建。它只会重新构建发生变化的文件及其依赖项,以提高构建效率。
make 命令在软件开发中非常常见,特别是在使用 C、C++ 或类似的编程语言时。它可以帮助自动化构建过程,简化编译、链接和安装等繁琐的任务。此外,make 还支持定义变量、条件语句和循环等高级功能,使构建过程更加灵活和可配置。
请注意,make 命令的具体用法和功能取决于项目的 Makefile 文件的内容和规则定义。不同的项目可能有不同的构建流程和约定。
make 是一个功能强大的构建工具,具有以下优点:

  1. 自动化构建:make 可以自动化执行编译、链接和安装等构建任务,无需手动执行繁琐的命令和操作。
  2. 依赖管理:make 可以根据目标文件和依赖文件的时间戳来确定哪些文件需要重新构建,从而避免不必要的重复构建,提高构建效率。
  3. 灵活性:make 支持定义变量、条件语句和循环等高级功能,使构建过程更加灵活和可配置。这使得开发人员可以根据项目的需要自定义构建规则和行为。
  4. 跨平台性:make 是一个跨平台的工具,可以在不同的操作系统(如 Linux、macOS 和 Windows)上使用,并且可以适应不同的编程语言和项目类型。
    然而,make 也有一些缺点:
  5. 学习曲线:make 的语法和概念可能对于初学者来说有一定的学习曲线。理解和编写复杂的 Makefile 可能需要一些时间和经验。
  6. 依赖管理的局限性:make 的依赖管理是基于文件时间戳的,如果文件的依赖关系无法通过时间戳准确反映,可能会导致构建错误或不完整的构建。
  7. 缺乏跨平台一致性:尽管 make 是跨平台的,但在不同的操作系统上可能需要特定的配置和命令来适应不同的环境。
  8. 项目维护的复杂性:随着项目规模的增长,复杂的 Makefile 可能变得难以维护和理解。特别是当涉及到大量的目标、依赖关系和条件逻辑时,Makefile 可能变得冗长和复杂。
二、make命令
  1. make:执行 Makefile 中的默认目标。
  2. make target:执行指定的目标。
  3. make -f filename:使用指定的 Makefile 文件执行构建。
  4. make -C directory:在指定的目录中执行构建。
  5. make -n:显示执行 Makefile 时将执行的命令,但不实际执行。
  6. make -B:强制重新构建目标,即使目标已经是最新的。
  7. make -j n:使用多个并行任务进行构建,其中 n 是并行任务的数量。
  8. make -k:继续构建,即使某些目标构建失败。
  9. make -s:静默模式,只显示关键信息,不显示详细的构建输出。
  10. make clean:清除生成的目标文件和中间文件。
  11. make install:将生成的文件安装到指定位置。
  12. make uninstall:卸载先前安装的文件。
  13. make all:构建项目的所有目标。
  14. make debug:以调试模式构建项目。
  15. make release:以发布模式构建项目。
  16. make test:运行项目的测试套件。
  17. make cleanall:清除所有生成的文件,包括目标文件和中间文件。
  18. make distclean:清除所有生成的文件和配置,还原到初始状态。
  19. make depend:更新源文件的依赖关系。
  20. make help:显示 Makefile 中定义的帮助信息。
  21. make cleanobj:清除生成的目标文件,但保留其他中间文件。
  22. make dist:创建软件分发包,通常是压缩文件或归档文件。
  23. make distcheck:检查软件分发包的完整性和正确性。
  24. make distro:构建适用于特定发行版的软件包。
  25. make format:格式化源代码文件,以符合特定的编码规范。
  26. make lint:执行静态代码分析,检查代码中的潜在问题。
  27. make update:更新项目的依赖项或从版本控制系统中获取最新的代码。
  28. make version:显示项目的版本信息。
  29. make cleanlogs:清除生成的日志文件。
  30. make doc:生成项目的文档。
  31. make coverage:生成代码覆盖率报告。
  32. make profile:生成性能分析报告。
  33. make check:运行额外的检查或测试,以确保项目的正确性。
  34. make distcleanall:清除所有生成的文件、配置和中间文件,还原到初始状态。
  35. make distrocheck:检查软件分发包的适用性和正确性,以及与特定发行版的兼容性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/680338.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

视觉开发板—K210自学笔记(五)

本期我们来遵循其他单片机的学习路线开始去用板子上的按键控制点亮LED。那么第一步还是先知道K210里面的硬件电路是怎么连接的,需要查看第二节的文档,看看开发板原理图到底是按键是跟哪个IO连在一起。然后再建立输入按键和GPIO的映射就可以开始变成了。 …

Redis中缓存问题

缓存预热 Redis缓存预热是一项关键任务,可帮助提升应用程序的性能和响应速度。在高流量的应用程序中,Redis缓存预热可以加速数据查询和读取,从而改善用户体验。本文将介绍一种快速、稳定的Redis缓存预热方案,并提供相应代码实现。…

Linux第48步_编译正点原子的出厂Linux内核源码

编译正点原子的出厂 Linux 内核源码,为后面移植linux做准备。研究对象如下: 1)、linux内核镜像文件“uImage” 路径为“arch/arm/boot”; 2)、设备树文件“stm32mp157d-atk.dtb” 路径为“arch/arm/boot/dts” 3)、默认配置文件“stm32m…

django中实现数据库操作

在Django中,数据库操作通常通过Django的ORM(Object-Relational Mapping)来实现。ORM允许你使用Python类来表示数据库表,并可以使用Python语法来查询和操作数据库。 以下是在Django中实现数据库操作的基本步骤: 一&am…

2.11 假期作业

1、若有以下说明语句:int a[12]{1,2,3,4,5,6,7,8,9,10,11,12};char c’a’,d,g;则数值为4的表达式是(D)。 A)a[g-c] B)a[4] C)a[‘d’-‘c’] D)a[‘d’-c] 2、假…

C++入门篇——类与对象重点解析(中篇)

1. 类的6个默认成员函数 如果一个类中什么成员都没有,简称为空类。 空类中真的什么都没有吗?并不是,任何类在什么都不写时,编译器会自动生成以下6个默认成员函数。 class Date {}; 默认成员函数:用户没有显式实现&a…

WordPress修改所有用户名并发送邮件通知的插件Easy Username Updater

前面跟大家介绍了『如何修改WordPress后台管理员用户名?推荐2种简单方法』一文,但是对于有很多用户的站长来说,操作有点复杂,而且无法发邮件通知对方,所以今天boke112百科向大家推荐一款可以直接在WordPress后台修改所…

Rust语言之哈希表

文章目录 哈希表(Hash map)一、新建哈希表二、访问某个元素索引访问GET方法 二、插入新元素三、遍历哈希表四、检查某个元素是否存在contains_key方法entry方法 五、元素更新使用contains_keyinsert 的方法使用entry方法 六、删除元素 Rus设计语言官方教程 哈希表&…

全面详细对比@Resource和@Autowired

版权声明 本文原创作者:谷哥的小弟作者博客地址:http://blog.csdn.net/lfdfhl Resource和Autowired概述 在Java的Spring框架中,Resource和Autowired都是用于实现依赖注入(Dependency Injection, DI)的重要注解。依赖…

洛谷UVA题目Unknown Error

UnexpectedResponseStatus: expect status code: 301 Moved Permanently on https://onlinejudge.org/index.php?optioncom_comprofiler&tasklogin, got: 200 OK 如果你绑定了账号,去原站Online Judge - Home 登录一下,好久没登陆,需要激…

[2-远程开发-01]idea远程连接开发

背景 因为本次的项目使用到一些网络相关的库只在linux可使用,项目本身也会在linux运行,而且如果在mac上进行开发的话,也涉及到部署的问题,而且也不能调试。 所以直接在本专栏第一篇的centos主机上进行开发,以远程连接…

Junit常用断言

0.断言简介 断言:assert Q:断言的作用 更方便的对结果进行判定 "有针对性"的if判断 针对两个变量值是否相同 使用assertEquals针对两个对象是否相同 使用assertSame针对返回值是否为True 使用assertTrue 1.断言的参数 assertXXX(”断言失败时提升的信息“&#x…

MD5 哈希

md5DigestAsHex 是 Spring Framework 中 DigestUtils 类的一个方法,用于计算 MD5 哈希并返回十六进制表示的字符串。这个方法的主要作用是将输入的字节数组进行 MD5 哈希处理,并返回结果的十六进制表示形式。 MD5(Message Digest Algorithm …

【开源】SpringBoot框架开发校园疫情防控管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 学生2.2 老师2.3 学校管理部门 三、系统展示四、核心代码4.1 新增健康情况上报4.2 查询健康咨询4.3 新增离返校申请4.4 查询防疫物资4.5 查询防控宣传数据 五、免责说明 一、摘要 1.1 项目介绍 基于JAVAVueSpringBoot…

C# Thread的使用

在C#中,线程用于实现程序的并发执行。通过创建和管理多个线程,可以同时处理不同的任务或操作,从而提高程序性能和响应性。以下是如何在C#中使用线程的基本步骤: 创建新线程 // 使用System.Threading命名空间 using System.Threa…

【Java程序设计】【C00253】基于Springboot的在线考试管理系统(有论文)

基于Springboot的在线考试管理系统(有论文) 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于Springboot的在线考试系统 本系统分为系统功能模块、管理员功能模块以及用户功能模块。 系统功能模块:系统登录,管理…

WordPress后台编辑个人资料页面直接修改用户名插件Change Username

前面跟大家介绍了『如何修改WordPress后台管理员用户名?推荐2种简单方法』一文,但是对于新站长或者有很多用户的站长来说,操作有点复杂,所以今天向大家推荐一款可以直接在WordPress后台编辑个人(用户)资料页…

网络安全漏洞管理十大度量指标

当前,网络安全漏洞所带来的风险及产生的后果,影响到网络空间乃至现实世界的方方面面,通信、金融、能源、电力、铁路、医院、水务、航空、制造业等行业各类勒索、数据泄露、供应链、钓鱼等网络安全攻击事件层出不穷。因此,加强对漏…

python打印圆形

要打印一个圆形,你可以使用turtle模块来绘制图形。以下是一个示例代码: import turtledef draw_circle(radius):turtle.penup()turtle.goto(0, -radius)turtle.pendown()turtle.circle(radius)# 调整画笔速度(可选) turtle.speed…