Android编译中m、mm、mmm的区别

转载 2015年07月08日 09:57:29

/********************************************************************************************
 * author:conowen@大钟                                                                                                                          
 * E-mail:conowen@hotmail.com                                                                                                             
 * http://blog.csdn.net/conowen                                                                                                              
 * 注:本文为原创,仅作为学习交流使用,转载请标明作者及出处。      

 ********************************************************************************************/


m、mm、mmm命令可以让你只编译单独模块,而不用费大量的时间比编译整个Android系统。


要使用m、mm、mmm命令,需要在源码目录下执行如下命令。(点与build之间是有空格的)

[java] view plaincopy
  1. . build/envsetup.sh  

否则会提示命令找不到

[java] view plaincopy
  1. No command 'mmm' found, did you mean:  
  2.  Command 'mwm' from package 'motif-clients' (multiverse)  
  3.  Command 'mwm' from package 'lesstif-bin' (universe)  
  4.  Command 'mgm' from package 'mgm' (universe)  
  5.  Command 'rmm' from package 'nmh' (universe)  
  6.  Command 'rmm' from package 'mailutils-mh' (universe)  
  7.  Command 'mmv' from package 'mmv' (universe)  
  8.  Command 'mmd' from package 'mtools' (main)  
  9.  Command 'mmg' from package 'mkvtoolnix-gui' (universe)  
  10.  Command 'mm' from package 'mountmanager' (universe)  
  11.  Command 'mm' from package 'multimail' (universe)  


可以使用help来检示有哪些指令可以使用

[plain] view plaincopy
  1. Invoke ". build/envsetup.sh" from your shell to add thefollowing functions to your environment:  
  2.   
  3. - croot:   Changes directory to the top of the tree.  
  4. - m:       Makesfrom the top of the tree.  
  5. - mm:      Builds all of the modules in the currentdirectory.  
  6. - mmm:     Builds all of the modules in the supplieddirectories.  
  7. - cgrep:   Greps on all local C/C++ files.  
  8. - hgrep:   Greps on all local C/C++ header files.  
  9. - jgrep:   Greps on all local Java files.  
  10. - mkgrep:  Greps on all local make files.  
  11. - rcgrep:  Greps on all local .rc files.  
  12. - resgrep: Greps on all local res/*.xml files.  
  13. - shgrep:  Greps on all local .sh files.  
  14. - godir:   Go to the directory containing a file.  

其中对模块的编译有辅助说明的是tapas、m、mm、mmm这几个指令

其中mmm后面要跟模块的根目录,不是所有的目录下都有子模块,那些含有Android.mk档案目录才是模块的根目录,模块名可以从Android.mk的LOCAL_MODULE或者LOCAL_PACKAGE_NAME变数中得到。

1、单独编译某模块,需要在mmm后面指定模块路径,例如编译ffmpeg 中的libjnivideo

[java] view plaincopy
  1. conowen@ideal:~/conowen_android/android4.0$ mmm frameworks/base/native/video/jni  
  2. ============================================  
  3. PLATFORM_VERSION_CODENAME=REL  
  4. PLATFORM_VERSION=4.0.1  
  5. TARGET_PRODUCT=full  
  6. TARGET_BUILD_VARIANT=eng  
  7. TARGET_BUILD_TYPE=release  
  8. TARGET_BUILD_APPS=  
  9. TARGET_ARCH=arm  
  10. TARGET_ARCH_VARIANT=armv7-a  
  11. HOST_ARCH=x86  
  12. HOST_OS=linux  
  13. HOST_BUILD_TYPE=release  
  14. BUILD_ID=ITL41D  
  15. ============================================  


2、或者可以跳转到你想编译模块相对应目录下执行“mm”命令。

           就可以编译单独的模块,事实上,这个命令与mmm命令没有本质的区别。


3、用 m 编译全部的模块

[java] view plaincopy
  1. conowen@ideal:~/conowen_android/android4.0$ m   

你也可以在src目录下直接执行


[java] view plaincopy
  1. conowen@ideal:~/conowen_android/android4.0$ make module_name       

m,mm,mmm区别

Android源码目录下的build/envsetup.sh文件,描述编译的命令 m: Makes from the top of the tree. mm: Builds a...
  • zhonglunshun
  • zhonglunshun
  • 2017年04月20日 11:36
  • 467

Android源代码编译命令m/mm/mmm/make分析

在前文中,我们分析了Android编译环境的初始化过程。Android编译环境初始化完成后,我们就可以用m/mm/mmm/make命令编译源代码了。当然,这要求每一个模块都有一个Android.mk文...
  • Luoshengyang
  • Luoshengyang
  • 2014年03月10日 00:57
  • 91474

Android系统编译指令make 、mmm、mm优缺点比较

Android 系统提供了三种指令用于编译,他们分别为make、mmm、mm,这三个指令编译的优缺点如下: 1. make:不带任何参数,用于编译整个系统,编译时间比较长,除非是进行初次编译否则不建...
  • hanfengzqh
  • hanfengzqh
  • 2016年10月13日 14:34
  • 1273

Android中m、mm、mmm、mma、mmma的区别

m:编译所有的模块 mm:编译当前目录下的模块,当前目录下需要有Android.mk这个makefile文件 mmm:编译指定路径下的模块,指定的路径下面需要有Android.mk这个makefile...
  • alley98
  • alley98
  • 2016年12月10日 16:44
  • 6520

android平台的三个编译命令----make,mm,mmm

在android源码根目录下,执行以下三步即可编译android: 1. build/envsetup.sh #这个脚本用来设置android的编译环境; 2. lunch #选择编译目标 ...
  • finewind
  • finewind
  • 2015年06月16日 19:32
  • 12935

理解 Android Build 系统 mm mmm mma croot

转自:http://www.ibm.com/developerworks/cn/opensource/os-cn-android-build/ 前言 Android Build 系统是 An...
  • coder_jack
  • coder_jack
  • 2014年02月11日 20:31
  • 7721

android 源码的m、mm、mmm编译命令的使用与重新打包android系统镜像文件。

m:编译整个安卓系统      makes from the top of the tree mm:编译当前目录下的模块,当前目录下需要有Android.mk这个makefile文件,否则就往上找...
  • qq_32014215
  • qq_32014215
  • 2017年04月21日 10:26
  • 646

Launcher3模块编译(用mm命令)报错,解决方案

KK整个project编译可以通过,但是 Launcher3模块编译(用mm命令)报错 KK上编译指令有改变,第一次build module时请用mma命令代替mm命令进行模块编译,之后再...
  • chenda_lin
  • chenda_lin
  • 2014年09月16日 18:09
  • 2278

Android编译中m、mm、mmm 详解

Android 完成编译的时候先执行  source build/envsetup.sh。  在这个shell 脚本中定义了 help,  croot, m, mm, mmm 等 function ...
  • u010278548
  • u010278548
  • 2013年08月31日 13:19
  • 566

android:m/mm/mmm

android:m/mm/mmm from:http://www.cnblogs.com/sardine/archive/2011/07/07/2100054.html 1...
  • jimiahua
  • jimiahua
  • 2012年02月05日 09:42
  • 2357
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android编译中m、mm、mmm的区别
举报原因:
原因补充:

(最多只允许输入30个字)