安卓之Android.mk多文件以及动态库编译

Posted 小白

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了安卓之Android.mk多文件以及动态库编译相关的知识,希望对你有一定的参考价值。

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多文件以及动态库编译的主要内容,如果未能解决你的问题,请参考以下文章

Android 安装包优化使用 lib7zr.so 动态库处理压缩文件 ( 修改 7zr 交叉编译脚本 Android.mk | 交叉编译 lib7zr.so 动态库 )

Android.mk介绍(一)

android.mk是在啥情况下生成的

安卓之Android.mk编写

cocos2dx android mk 2.0.2编译文件目录以及导入库问题

Android.mk文件分析