zoukankan      html  css  js  c++  java
  • Android 系统(64)---Android中m、mm、mmm、mma、mmma的区别【转】

    本文转载自:https://blog.csdn.net/zhangbijun1230/article/details/80196379

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

    m:编译整个安卓系统

         makes from the top of the tree

    mm:编译当前目录下的模块,当前目录下需要有Android.mk这个makefile文件,否则就往上找最近的Android.mk文件。

             builds all of the moudles in the current directory

             mma:当前目录新增或删除文件后,可以用mma重新编译。

    mmm:编译指定路径下的模块,指定的路径下面需要有Android.mk这个makefile文件

                 builds all of the moudles in the supplies directory

                mmma:指定目录下新增或删除文件后,可以用mmma重新编译。

                mmm命令 的编译过程:

                build/core/main.mk(是Android编译系统的入口文件)

               ->build/core/config.mk(会定好编译类型和目标文件)

                                                          ->build/core/definitions.mk(定义在编译过程中用到的宏)

                                                          ->ONE_SHOT_MAKEFILE->build/core/package.mk(编译Apk库文件)

                                                                                                     ->build/core/java_library.mk(编译Java库文件)

                                                                                                     ->build/core/static_java_library.mk(编译Java静态库文件)

                                                                                                     ->build/core/shared_library.mk->build/core/dynamic_library.mk->build/core/binary.mk->build/core/base_rules.mk

                                                                                                                                                                                             ( 计算一些基本变量的值,并创建一些基本的依赖规则)

                                                                                                                                                      ->build/core/static_library.mk(编译.a静态库文件)

                                                                                                                                                      ->build/core/executable.mk(编译可执行文件)

                                                                                                                                                      ->build/core/prebuilt.mk(编译已经预编译好的第三方库文件)

                                                                                                     ->build/core/Makfile(有system.img、boot.img、recovery.img等镜像文件生成规则)

                 环境变量ONE_SHOT_MAKEFILE中存放要编译模块的Android.mk的文件路径,如果环境变量值为空,表示执行的是m或者make命令,会对Android源代码中的所有模块进行编译。

    mm、mmm是类似的,都是用来编译某些模块。

    使用这些编译命令,首先需要在Android根目录下配置环境

    [plain] view plain copy
    1. #source  build/envsetup.sh         要确保当前根目录下有envsetup.sh脚本文件  
    [plain] view plain copy
    1. #choose...                         对环境的选择  
    [plain] view plain copy
    1. #cd (要编译模块所在的目录)  
    [plain] view plain copy
    1. #mm(mma、mmm、mmma) -B -j2  2>&1    开始编译模块  
    [plain] view plain copy
    1. 注:-B表示编译模块的所有文件,-j2表示编译的时候开启两个线程,2>&1表示将错误切换到输出(输入为0,输出为1,错误为2)。    
    [plain] view plain copy
    1.  envsetup.sh脚本文件里包含vendorsetup.sh 、lunch、 m mm mmm的定义 
  • 相关阅读:
    <转>反调试技巧总结原理和实现
    反调试功能<IsDebuggerPresent>
    通过取得MAC地址判断是否在VM中
    任何值得拥有的东西
    我的程序里
    吸引力法则之谜——十一条被遗忘的定律
    要成功,请忘掉自尊
    我是个只顾着想,却不去做的人
    现在有12个金币,其中一个有质量问题(或重或轻),还有一个无砝码的天平,让你称三次怎么样找到那个有质量问题的金币?
    惆怅
  • 原文地址:https://www.cnblogs.com/zzb-Dream-90Time/p/10192520.html
Copyright © 2011-2022 走看看