1、多文件编译

多文件编译共有两种方式:

  (1) 在Android.mk中一一添加

      LOCAL_PATH:= $(call my-dir)  #定义当前模块的相对路径
      include $(CLEAR_VARS)      #清空当前环境变量
      LOCAL_MODULE:= test      #编译生成的目标名称
      LOCAL_SRC_FILES := test1.c \
                  test2.c \
                  test3.c
                #编译该模块所需要的源文件
     # LOCAL_MODULE_PATH:=$(LOCAL_PATH) #在当前目录生成该模块文件
      include $(BUILD_EXECUTABLE)   #编译之后的文件类型

  (2)在Android.mk中调用函数 

     LOCAL_PATH:= $(call my-dir)  #定义当前模块的相对路径
      include $(CLEAR_VARS)      #清空当前环境变量
      LOCAL_MODULE:= test      #编译生成的目标名称
      LOCAL_C_ALL_FILES := $(call all-c-files-under) #加载所有的文件     
      LOCAL_SRC_FILES := $LOCAL_C_ALL_FILES      
     # LOCAL_SRC_FILES := test.c    #编译该模块所需要的源文件
     # LOCAL_MODULE_PATH:=$(LOCAL_PATH) #在当前目录生成该模块文件
      include $(BUILD_EXECUTABLE)   #编译之后的文件类型

2、一个Android.mk生成多个目标文件,只需要在Android.mk下面做如下的操作

       LOCAL_PATH:= $(call my-dir)  #定义当前模块的相对路径
      include $(CLEAR_VARS)      #清空当前环境变量
      LOCAL_MODULE:= test1      #编译生成的目标名称
      LOCAL_C_ALL_FILES := $(call all-c-files-under) #加载所有的文件     
      LOCAL_SRC_FILES := $LOCAL_C_ALL_FILES      
     # LOCAL_SRC_FILES := test.c    #编译该模块所需要的源文件
     # LOCAL_MODULE_PATH:=$(LOCAL_PATH) #在当前目录生成该模块文件
      include $(BUILD_EXECUTABLE)   #编译之后的文件类型
      LOCAL_PATH:= $(call my-dir)  #定义当前模块的相对路径
      include $(CLEAR_VARS)      #清空当前环境变量
      LOCAL_MODULE:= test2      #编译生成的目标名称
      LOCAL_C_ALL_FILES := $(call all-c-files-under) #加载所有的文件     
      LOCAL_SRC_FILES := $LOCAL_C_ALL_FILES      
     # LOCAL_SRC_FILES := test.c    #编译该模块所需要的源文件
     # LOCAL_MODULE_PATH:=$(LOCAL_PATH) #在当前目录生成该模块文件
      include $(BUILD_EXECUTABLE)   #编译之后的文件类型

3、生成动态库,操作Android.mk

      LOCAL_PATH:= $(call my-dir)  #定义当前模块的相对路径
      include $(CLEAR_VARS)      #清空当前环境变量
      LOCAL_MODULE:= libtest      #编译生成的目标名称
      LOCAL_SRC_FILES := test1.c \
                  test2.c \
                  test3.c
                #编译该模块所需要的源文件
     # LOCAL_MODULE_PATH:=$(LOCAL_PATH) #在当前目录生成该模块文件
      include $(BUILD_SHARED_LIBRARY)   #编译之后的文件类型

4、生成静态库,操作Android.mk

      LOCAL_PATH:= $(call my-dir)  #定义当前模块的相对路径
      include $(CLEAR_VARS)      #清空当前环境变量
      LOCAL_MODULE:= libtest      #编译生成的目标名称
      LOCAL_SRC_FILES := test1.c \
                  test2.c \
                  test3.c
                #编译该模块所需要的源文件
     # LOCAL_MODULE_PATH:=$(LOCAL_PATH) #在当前目录生成该模块文件
      include $(BUILD_STATIC_LIBRARY)   #编译之后的文件类型

####共勉#####

安卓之Android.mk多文件以及动态库编译的更多相关文章

  1. Android.mk添加本地程序和库的经常使用模版

    Android.mk添加本地程序和库的经常使用模版 Android中添加本地程序或者库.这些程序和库与其所在路径没有关系.仅仅与它们的配置文件Android.mk有关.Android.mk文件里可以主 ...

  2. C/C++ 跨平台交叉编译、静态库/动态库编译、MinGW、Cygwin、CodeBlocks使用原理及链接参数选项

    目录 . 引言 . 交叉编译 . Cygwin简介 . 静态库编译及使用 . 动态库编译及使用 . MinGW简介 . CodeBlocks简介 0. 引言 UNIX是一个注册商标,是要满足一大堆条件 ...

  3. linux动态库编译和使用

    linux动态库编译和使用详细剖析 引言 重点讲述linux上使用gcc编译动态库的一些操作.并且对其深入的案例分析.最后介绍一下动态库插件技术, 让代码向后兼容.关于linux上使用gcc基础编译, ...

  4. linux动态库编译和使用详细剖析 - 后续

    引言 - 也许是修行 很久以前写过关于动态库科普文章, 废话反正是说了好多. 核心就是在 linux 上面玩了一下 dlopen : ) linux动态库编译和使用详细剖析 - https://www ...

  5. 动态库与静态库的学习 博主写的很好 静态库 编译的时候 需要加上 static 动态库编译ok运行不成功就按照文章中的方法修改

    来源连接   http://www.cnblogs.com/skynet/p/3372855.html C++静态库与动态库 这次分享的宗旨是--让大家学会创建与使用静态库.动态库,知道静态库与动态库 ...

  6. Android.mk各种文件编译汇总

    一.源代码编译 1.1 so预编译 LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := libAppArea LOCAL ...

  7. 安卓之Android.mk编写

    题记:编译环境可以参考https://www.cnblogs.com/ywjfx/p/9960817.html 不管是写C还是java,我想所有的程序员都经历过HelloWorld程序的编写,现在让我 ...

  8. Linux命令之ar - 创建静态库.a文件和动态库.so

    转自:http://blog.csdn.net/eastonwoo/article/details/8241693 用途说明 创建静态库.a文件.用C/C++开发程序时经常用到,但我很少单独在命令行中 ...

  9. .h头文件 .lib库文件 .dll动态库文件之间的关系

    .h头文件是编译时必须的,lib是链接时需要的,dll是运行时需要的. 附加依赖项的是.lib不是.dll,若生成了DLL,则肯定也生成 LIB文件.如果要完成源代码的编译和链接,有头文件和lib就够 ...

随机推荐

  1. win7彻底卸载VS2015

    C盘越来越臃肿,VS2013.VS2015.VS2017以及VS2019都安装的情况下,C盘没有空间了. 系统:Win7 卸载办法: 管理员方式进cmd,执行vs_professional.exe / ...

  2. 小程序的openid和公众号的openid是否一致

    早期的产品只用了公众号,没有注册开放平台(没有unionid).然后现在需要上线小程序,这种情况下,企业是同一个企业的,但是公众号的openid和小程序的openid是否一致呢? 我来回答你这个问题: ...

  3. MySQL/MariaDB数据库的主主复制

      MySQL/MariaDB数据库的主主复制 作者:尹正杰  版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.主主复制概述 1>.什么是主主复制 所谓的主主复制,说白了就是两台节点互为 ...

  4. ms08067 分析与利用

    分析 漏洞位于 NetpwPathCanonicalize 函数里面,这个函数的作用在于处理路径中的 ..\ 和 .\ 信息.该函数声明如下: DWORD NetpwPathCanonicalize( ...

  5. python打造seo必备工具-自动查询排名

    因为工作需要,利用业余时间开发的,可以查询百度排名+360排名工具,附上代码. #360搜索排名查询 # -*- coding=utf-8 -*- import requests from lxml ...

  6. Python应用-完成简单邮件发送功能

    项目中有时候需要用脚本来自动发送邮件,而用Python来发送邮件十分的方便,代码如下: #!/usr/bin/python #coding:utf-8 import smtplib from emai ...

  7. wordpress调用指定post type文章怎么操作

    我们有时会用wordpress创建好几种post type文章,比如默认的post文章和product文章,如果我们要在每个页面的底部调用post type类型为post最新文章要如何操作呢?那我们就 ...

  8. 【Selenium-WebDriver实战篇】Eclipse上的maven使用JsonObject时,添加依赖后无法自动下载相应的jar包

    ==================================================================================================== ...

  9. 如何使用powerdesigner导出sql脚本

    使用power designer可以很方便的对数据库设计进行管理,并且能够更方便的查看表与表之间的关系.同时,还可以对设计好的数据库直接导出创建脚本,根据不同的数据库实例导出对应的创建脚本,然后根据脚 ...

  10. SpringCloud过滤filter

    目录 配置文件 application.yml eureka: client: service-url: defaultZone: http://localhost:8001/eureka serve ...