android 编译模块

在写完.c文件之后,需要加载到android上进行测试。使用arm-linux-gcc编译,并添加到android开发板上运行失败。

由于android与linux不同,需要编译成模块加载才能够正常运行。本文记录编译成模块的方法。

参考链接:

  https://www.ibm.com/developerworks/cn/opensource/os-cn-android-build/

1. Android.mk

每一个模块都有一个Android.mk文件,将源码和Android.mk都放在一个目录中。

LOCAL_PATH := $(call my-dir)        # 设置当前模块的编译路径为当前文件夹路径。

include $(CLEAR_VARS)               # 清理(可能由其他模块设置过的)编译环境中用到的变量。

LOCAL_MODULE    := gpio             # 当前模块名称,编译之后生成的模块名称
LOCAL_SRC_FILES := gpio.c # 当前模块包含的所有源代码文件
LOCAL_LDLIBS := -llog # 编译本模块需要使用的库 include $(BUILD_EXECUTABLE) # 编译成可执行文件
#include $(BUILD_SHARED_LIBRARY) # 编译成共享库
编译
source build/envsetup.sh    # 初始化编译环境,并引入一些辅助的 Shell 函数,这其中就包括后面使用的使用lunch,mmm函数。

lunch sabresd_6dq-eng       # lunch函数的参数用来指定此次编译的目标设备以及编译类型, 这里指定设备是的是imx6

mmm dir                     # 编译指定目录下的模块,这个dir目录包含上面提到的Android.mk以及源码,自行更改目录的路径

生成的镜像位于

  out/target/product/sabresd_6dq/system/bin/gpio

Author

Tony Liu

2016-8-13, Shenzhen

android 编译模块的更多相关文章

  1. android源码环境下用mmm/mm编译模块,输出编译log到文件的方法

    android源码环境下用mmm/mm编译模块,输出编译log到文件的方法 1,在android目录下直接用mmm命令编译, log信息保存在android目录下 mmm packages/apps/ ...

  2. Android编译环境(1) - 编译Native C的模块

    Android编译环境本身比较复杂,且不像普通的编译环境:只有顶层目录下才有Makefile文件,而其他的每个component都使用统一标准的Android.mk. Android.mk文件本身是比 ...

  3. android 编译

    编译 Android完全编译,耗时 1 小时 25 分$ make编译当前目录下的模块,耗时 1 小时 31 分mm编译指定目录下的模块mmm 模块的根目录清除上次编译输出make clean单独编译 ...

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

    准备工作 在AndroidSource Code中有envsetup.sh档案,当执行过此档案后,可以大幅将build的过程简单化.自动化 此档案在src(android source code 位置 ...

  5. 【Android】MTK Android 编译命令

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

  6. Android编译过程详解(三)

    前面两节讲解了自定义Android编译项和创建Product产品配置文件,除了编译和定义产品相关环境变量外,还需要定义Board相关环境变量. 1. build/core/config.mk 109 ...

  7. Android编译错误——undefined reference to

    [错误描述] 未定义引用 提示如下:bootable/recovery/minzip/Zip.c:1122: error: undefined reference to 'selabel_lookup ...

  8. Android编译系统环境初始化过程分析

    Android源代码在编译之前,要先对编译环境进行初始化,其中最主要就是指定编译的类型和目标设备的型号.Android的编译类型主要有eng.userdebug和user三种,而支持的目标设备型号则是 ...

  9. Android 编译时:m、mm、mmm、mma、mmma的区别

    m:编译整个安卓系统 makes from the top of the tree mm:编译当前目录下的模块,当前目录下需要有Android.mk这个makefile文件,否则就往上找最近的Andr ...

随机推荐

  1. ssh登陆不上

    用ssh key登陆不上某台机A的某个账号xy1,查看A的/var/log/messages,看到有这么句: User xy1 not allowed because account is locke ...

  2. MySQL 连接方式

    MySQL 连接方式 1:TCP/IP 套接字方式 这种方式会在TCP/IP 连接上建立一个基于网络的连接请求,一般是client连接跑在Server上的MySQL实例,2台机器通过一个TCP/IP ...

  3. INV*更新物料信息

    物料 PROCEDURE update_item(p_init_msg_list IN VARCHAR2 DEFAULT fnd_api.g_false, x_return_status OUT NO ...

  4. 关于Javascript表单验证

    //验证字符串非空        var Validator = {    VerityLib: {         IsNotEmpty: function (input) {        if ...

  5. 调试Felix Framework

    这里是指用Eclipse调试Felix Framework自身. 1. 首先安装Eclipse Java EE,然后再安装Java Source Attacher,这样才会在Jar文件的右键菜单“属性 ...

  6. 查看Linux磁盘空间大小命令

    发表于:2012-09-17 10:25   查看Linux磁盘空间大小 一.df 命令: df 是来自于coreutils 软件包,系统安装时,就自带的:我们通过这个命令可以查看磁盘的使用情况以及文 ...

  7. C#实现分片上传文件

    using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.IO ...

  8. Android 使用Post方式提交数据

    在Android中,提供了标准Java接口HttpURLConnection和Apache接口HttpClient,为客户端HTTP编程提供了丰富的支持. 在HTTP通信中使用最多的就是GET和POS ...

  9. Docker入门二

    容器管理 1.docker create创建一个容器,但容器并没启动,就和我们创建虚拟机一样,创建了虚拟机后没启动 [root@centos-02 ~]# docker create -it cent ...

  10. unity, EventType.MouseUp注意事项

    如果鼠标移出了窗口范围,则即使鼠标抬起也不会收到EventType.MouseUp消息,所以只写 if(event==EventType.MouseUp){ 执行某操作 } 是错误的,会导致非常奇怪的 ...