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的定义 
  • 相关阅读:
    leetcode Super Ugly Number
    leetcode Find Median from Data Stream
    leetcode Remove Invalid Parentheses
    leetcode Range Sum Query
    leetcode Range Sum Query
    leetcode Minimum Height Trees
    hdu 3836 Equivalent Sets
    hdu 1269 迷宫城堡
    hud 2586 How far away ?
    poj 1330 Nearest Common Ancestors
  • 原文地址:https://www.cnblogs.com/zzb-Dream-90Time/p/10192520.html
Copyright © 2011-2022 走看看