linux m、mm、mmm函数和make的区别

简介: 通过理解和合理使用这些命令,可以更高效地进行项目构建和管理,特别是在复杂的 Android 开发环境中。

Linux 中 m、mm、mmm 函数和 make 的区别

在 Linux 内核开发和 Android 开发中,构建系统通常使用 make 命令来编译和构建项目。而在 Android 开发环境中,还有 mmmmmm 等命令,这些命令是 Android 构建系统的一部分,提供了更高效和便捷的构建方式。以下将详细介绍这些命令的功能、使用场景和区别。

一、make 命令

概述

make 是一个构建自动化工具,通过读取名为 Makefile 的文件来执行编译和构建任务。Makefile 中定义了编译规则、依赖关系和构建步骤。

使用场景

  • 编译整个项目make 命令通常用于编译整个项目。
  • 增量编译make 只编译发生变化的文件,节省编译时间。
  • 执行自定义任务:通过在 Makefile 中定义自定义任务,make 可以执行多种构建和自动化任务。

示例

make
make clean
make install
​

二、mmmmmm 命令

概述

mmmmmm 是 Android 构建系统中的命令,用于简化 Android 项目的编译过程。这些命令是 Android 源代码树中的脚本,帮助开发者在不同级别上进行构建。

1. m 命令

功能

m 命令在 Android 源代码的根目录中使用,用于编译整个 Android 系统。

使用场景

  • 编译整个 Android 系统:在源码根目录中运行 m 命令来编译整个 Android 系统,包括所有的子项目和模块。

示例

m
​

2. mm 命令

功能

mm 命令在模块目录中使用,用于编译当前目录下的所有模块。

使用场景

  • 编译当前目录的模块:在具体模块的目录中运行 mm 命令,只编译当前目录下的模块,适合单个模块的开发和调试。

示例

cd packages/apps/Settings
mm
​

3. mmm 命令

功能

mmm 命令可以在任意位置使用,用于编译指定路径下的模块。

使用场景

  • 编译指定路径的模块:可以在 Android 源代码树中的任何位置运行 mmm 命令,编译一个或多个指定路径下的模块。

示例

mmm packages/apps/Settings
​

三、区别和对比

1. 使用范围

  • make:适用于各种项目的构建,包括但不限于 Linux 内核和应用程序。make 是一个通用的构建工具,通过 Makefile 控制构建流程。
  • mmmmmm:专用于 Android 源代码树中的构建。m 编译整个 Android 系统,mm 编译当前目录下的模块,mmm 编译指定路径下的模块。

2. 编译粒度

  • make:可以根据 Makefile 中定义的规则,灵活地编译整个项目或特定的目标。
  • m:编译整个 Android 系统,适合全量构建。
  • mm:编译当前目录下的模块,适合单个模块的开发和调试。
  • mmm:编译指定路径下的模块,适合同时编译多个不同路径下的模块。

3. 依赖管理

  • make:依赖关系通过 Makefile 定义,手动管理,适用于各种编程语言和项目。
  • mmmmmm:依赖关系由 Android 构建系统自动管理,简化了 Android 项目的依赖管理。

四、总结

功能对比表

命令 功能 使用场景 依赖管理 编译粒度
make 通用构建工具,通过 Makefile 控制 各种项目 手动管理 灵活,依赖 Makefile 定义
m 编译整个 Android 系统 编译 Android 系统 自动管理 整个系统
mm 编译当前目录下的模块 Android 模块开发 自动管理 当前目录
mmm 编译指定路径下的模块 Android 模块开发 自动管理 指定路径

使用建议

  • 使用 make:适用于需要自定义构建流程的项目,特别是在非 Android 项目中。
  • 使用 mmmmmm:适用于 Android 开发,利用其自动化构建和依赖管理功能,提高开发效率。

通过理解和合理使用这些命令,可以更高效地进行项目构建和管理,特别是在复杂的 Android 开发环境中。

目录
相关文章
|
2月前
|
存储 Ubuntu 安全
Linux中Centos和Ubuntu的区别
CentOS主要面向服务器环境,而Ubuntu适用于服务器和桌面环境。   CentOS提供更精简的安装,而Ubuntu提供更广泛的开箱即用功能。   CentOS遵循RHEL的所有安全实践,而Ubuntu在安全方面采取更积极的方法。
|
2月前
|
Ubuntu 安全 Unix
Linux和Ubuntu有什么区别
综上所述,Linux和Ubuntu之间存在明显的区别。Linux是一种操作系统内核,而Ubuntu是基于Linux内核的发行版本,具有更好的易用性、社区支持和软件仓库。用户可以根据自己的需求选择不同的Linux发行版本,如果需要一个稳定、易于使用的桌面环境,Ubuntu是一个不错的选择。如果需要更加灵活和定制性强的系统,其他Linux发行版本可能更加适合。
|
3月前
|
安全 Unix Java
linux中kill -9和kill -15区别
在 Linux/Unix 系统中,`kill -9` 和 `kill -15` 是终止进程的常用命令,核心区别在于发送的信号类型不同,导致进程终止行为截然不同。`kill -15`(SIGTERM)允许进程进行清理操作后优雅退出,适用于正常关闭;而 `kill -9`(SIGKILL)则强制终止进程,不给予任何清理机会,仅在进程无响应时使用。本文从信号类型、行为、工作原理及使用建议等方面进行详细对比,帮助你更安全、有效地管理进程。
315 0
|
7月前
|
Unix Linux 编译器
windows下和linux下cmake的规则有区别吗
通过合理使用CMake的条件逻辑和平台特定的配置选项,开发者可以编写更加灵活和健壮的CMake脚本,确保项目在Windows和Linux上的一致性和可移植性。
341 76
|
8月前
|
Linux
linux syscall和int 80的区别
通过以上内容,希望您能更清晰地理解 `int 0x80` 和 `syscall` 的区别及其在不同系统架构中的应用。
487 99
|
4月前
|
NoSQL Linux 开发工具
Linux环境基础开发工具的使用(yum、vim、gcc、g++、gdb、make/Makefile)
本文介绍了yum 包管理工具、Vim 编辑器、gcc/g++ 编译器、gdb 调试器、编译原理及 Makefile 的使用,同时还配备了如何使用,以及图解。旨在帮助读者更好地理解和应用这些工具与技术。
214 0
|
8月前
|
缓存 Ubuntu Linux
Linux中yum、rpm、apt-get、wget的区别,yum、rpm、apt-get常用命令,CentOS、Ubuntu中安装wget
通过本文,我们详细了解了 `yum`、`rpm`、`apt-get`和 `wget`的区别、常用命令以及在CentOS和Ubuntu中安装 `wget`的方法。`yum`和 `apt-get`是高层次的包管理器,分别用于RPM系和Debian系发行版,能够自动解决依赖问题;而 `rpm`是低层次的包管理工具,适合处理单个包;`wget`则是一个功能强大的下载工具,适用于各种下载任务。在实际使用中,根据系统类型和任务需求选择合适的工具,可以大大提高工作效率和系统管理的便利性。
780 25
|
8月前
|
存储 Linux
linux中的目录操作函数
本文详细介绍了Linux系统编程中常用的目录操作函数,包括创建目录、删除目录、读取目录内容、遍历目录树以及获取和修改目录属性。这些函数是进行文件系统操作的基础,通过示例代码展示了其具体用法。希望本文能帮助您更好地理解和应用这些目录操作函数,提高系统编程的效率和能力。
314 26
|
10月前
|
Linux
【Linux】System V信号量详解以及semget()、semctl()和semop()函数讲解
System V信号量的概念及其在Linux中的使用,包括 `semget()`、`semctl()`和 `semop()`函数的具体使用方法。通过实际代码示例,演示了如何创建、初始化和使用信号量进行进程间同步。掌握这些知识,可以有效解决多进程编程中的同步问题,提高程序的可靠性和稳定性。
464 19
|
Linux
Linux0.11 文件打开open函数(五)
Linux0.11 文件打开open函数(五)
139 0