要使用m、mm、mmm命令对Android代码进行模块编译,需要先执行如下命令初始化环境。

source build/envsetup.sh

lunch

执行lunch时一般会通过命令行提示选择版型,输入对应的序号回车即可。

各命令作用及用法:

mmm命令:编译指定路径下的模块,需要指定模块路径(必须为该模块的根目录,包含Android.mk的目录)。

mm命令:编译当前目录下的模块,需要进到模块所在目录,本质上跟mmm没什么区别。

m命令:编译全部模块。

如下为一个简单呼吸灯PWM控制调用示例:

main.c

#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <sys/ioctl.h>typedef struct PWM_CONFIG_S{int duty_cycle;     //占空比int period;         //周期int enable_flag;    //开关
}PWM_CONFIG;#define NODE_NAME "/dev/breathing_light"int main(int argc, char *argv[])
{PWM_CONFIG pwm_config = {0};int fd = -1;int ret = -1;fd = open("/dev/breathing_light", O_RDWR);if(fd < 3){printf("open %s fail!\n", NODE_NAME);}printf("please input params:[period duty_cycle enable_flag]:\n");printf("Example:1000000 500000 1\n");scanf("%d %d %d",&pwm_config.period, &pwm_config.duty_cycle, &pwm_config.enable_flag);printf("--- set period      ->%d\n",pwm_config.period);printf("--- set duty_cycle  ->%d\n",pwm_config.duty_cycle);printf("--- set enable_flag ->%d\n",pwm_config.enable_flag);ret = ioctl(fd, 0, &pwm_config);if(ret >= 0){printf("control pwm: period:%d duty_cycle:%d %s success!\n",pwm_config.period,pwm_config.duty_cycle,pwm_config.enable_flag?"ON":"OFF");}else{printf("control pwm fail!!\n");}if(fd > 0)close(fd);return 0;
}

Android.mk

LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)
LOCAL_MODULE := pwm_test
LOCAL_PROPRIETARY_MODULE := true
#ALL_DEFAULT_INSTALLED_MODULES += $(LOCAL_MODULE)
LOCAL_SRC_FILES := \main.cLOCAL_SHARED_LIBRARIES := \libbase \liblog \libdl \libutils \libhardware include $(BUILD_EXECUTABLE)

工程编译:

进入到Android.mk 所在的目录下,执行mm命令,或者在SDK根目录下执行 mmm [Android.mk文件所在路径]  即可开始编译。

这样编译的时间相对整包编译可以节省很多,调试时我们只需要将编译出来的可执行文件或者动态库文件替换到板子子上验证即可。

Android编译命令m、mm、mmm区别及工程搭建示例相关推荐

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

    Android源代码编译命令m/mm/mmm/make分析 2014-03-10     我来说两句    来源:Android源代码编译命令m/mm/mmm/make分析   收藏    我要投稿 ...

  2. mtk平台android编译命令,MTK 常见的编译命令

    1: ./mk n(r) kernel; ./mk bootimage;当修改build-in 到kernel相关代码时,要使用此命令,具体文件参考如下: alps/kernel/ alps/medi ...

  3. 理解Android编译命令(转)

    一.引言 关于Android Build系统,这个话题很早就打算整理下,迟迟没有下笔,决定跟大家分享下.先看下面几条指令,相信编译过Android源码的人都再熟悉不过的. source setenv. ...

  4. Android 编译命令

    一.引言 先看下面几条指令,相信编译过Android源码的人都再熟悉不过的. source setenv.sh lunch make -j12 记得最初刚接触Android时,同事告诉我用上面的指令就 ...

  5. 理解Android编译命令

    一.引言 关于Android Build系统,这个话题很早就打算整理下,迟迟没有下笔,决定跟大家分享下.先看下面几条指令,相信编译过Android源码的人都再熟悉不过的. source /opt/an ...

  6. m,mm,mmm区别

    Android源码目录下的build/envsetup.sh文件,描述编译的命令 m: Makes from the top of the tree. mm: Builds all of the mo ...

  7. android编译命令及.mk文件浅析

    一.引言 先看下面几条指令,相信编译过Android源码的人都再熟悉不过的. source setenv.sh lunch make -j12 记得最初刚接触Android时,同事告诉我用上面的指令就 ...

  8. 【Android】MTK Android 编译命令

    命令格式:./maketek [option] [project] [action] [modules] Option: -t ,-tee :输出log信息到当前终端 -o , -opt=-- : 编 ...

  9. MTK Android 编译命令

    一.Target 编译命令 usage: (makeMtk|mk) [options] project actions [moudles] options:       -t,-tcc         ...

最新文章

  1. matlab 图论工具箱
  2. 快点啊,大工程禁用Visual Assist,禁用符号加载
  3. java在线学习系统源码_Java在线考试系统源码
  4. 第三次学JAVA再学不好就吃翔(part44)--匿名内部类
  5. Python中添加中文注释报错SyntaxError: Non-UTF-8 code starting with '\xc1'
  6. Ubuntu Mate 开机自启ROS
  7. js实现(可实现局部打印)
  8. 最大公约数 [2011年哈尔滨工业大学计算机研究生机试真题]
  9. 《『若水新闻』客户端开发教程》——06.设计新闻内容UI
  10. 学习日记day 10 : JavaScript秋风扫落叶第一期
  11. C语言练习题~分数求和
  12. 计算机博士专业目录,tsinghua计算机博士专业目录
  13. iOS Gif分解与展示
  14. 关于美颜滤镜您了解多少?
  15. 机器学习的应用——关于正确应用机器学习
  16. matlab批量修改指定像素
  17. 超声波测距 c语言程序流程图,超声波测距单片机C程序+原理图+PCB源文件
  18. 企业微信会员运营 打破传统营销方式开启全渠道会员营销新模式
  19. 罗振宇4小时跨年演讲精华版:大环境里的7个行动策略
  20. DONT_UNCOMPRESS_PRIV_APPS_DEXS配置

热门文章

  1. python选择题库和答案_python根据题库答案自动答题
  2. 易安居平安家园隐私政策
  3. 手把手教你电脑图片转文字怎么操作,助你提高工作效率
  4. ArcGIS for Android 100.3.0(10):Callout的使用
  5. C. K-th Not Divisible by n
  6. c语言中有关随机数的程序,C语言中随机数相关问题
  7. Android游戏开发教程------(绘制屏幕)
  8. oracle12c 配置监听,redhat上oracle 12c配置监听
  9. larval中redis的用法
  10. 七号信令监测系统培训手册