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. H3C Short GI

  2. 洛谷 P2722 总分题解

    题目描述 我们可以从几个种类中选取竞赛的题目,这里的一个"种类"是指一个竞赛题目的集合,解决集合中的题目需要相同多的时间并且能得到相同的分数.你的任务是写一个程序来告诉USACO的 ...

  3. python——selenium库的使用

    selenium 是一个用于Web应用程序测试的工具.Selenium测试直接运行在浏览器中,就像真正的用户在操作一样.支持的浏览器包括IE(7, 8, 9, 10, 11),Mozilla Fire ...

  4. ms08067 分析与利用

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

  5. Hive优化(整理版)

    1. 概述 1.1 hive的特征: 可以通过SQL轻松访问数据的工具,从而实现数据仓库任务,如提取/转换/加载(ETL),报告和数据分析: 它可以使已经存储的数据结构化: 可以直接访问存储在Apac ...

  6. STM32 IAP程序 源码 和测试代码 有详细的中文注释

    http://bbs.21ic.com/forum.php?mod=viewthread&tid=588265&reltid=624002&pre_pos=2&ext= ...

  7. RobotFrameWork框架介绍与安装

    一.RobotFrameWork介绍 1.简称RF,基于python研发的一款自动化测试框架.开源.跨平台的测试框架 2.RF是基于RF基金来研发的一款软件,目前已完全能够在python3环境下应用 ...

  8. 决策树——C4.5

    -- coding: utf-8 -- """ Created on Thu Aug 2 17:09:34 2018 决策树ID3,C4.5的实现 @author: we ...

  9. 树上最长不下降链 线段树合并+set

    读错题了,然后写了一个树上 LIS,应该是对的吧...... code: #include <bits/stdc++.h> #define N 200005 #define LL long ...

  10. Windbg命令的语法规则系列(一)

    本文介绍使用调试器命令必须遵循的语法规则.使用Windbg调试时,应遵守以下一般语法规则: 您可以在命令和参数中使用大小写字母的任意组合,除非在本节的主题中特别指出. 可以用一个或多个空格或逗号(,) ...