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)   #编译之后的文件类型

####共勉#####

原文:https://www.cnblogs.com/ywjfx/p/10004564.html

android.mk编译动态库,安卓之Android.mk多文件以及动态库编译相关推荐

  1. c语言多文件程序编译和链接,C语言知识汇总 | 04-源文件、可执行程序、编译与链接...

    一.源文件(Source File) 在开发软件的过程中,需要将编写好的代码(Code)保存到一个文件中,这样代码才不会丢失,才能够被编译器找到,才能最终变成可执行文件.这种用来保存代码的文件就叫做源 ...

  2. android+源码usb驱动,安卓打印驱动最全驱动源码库(usbSerialForAndroid)

    [实例简介] 此项目用于安卓小票打印驱动.(稳定版)已用于实际项目 支持: USB转串口线.纯串口阵脚打印线.纯USB打印线.Cp21xx.USB CDC/ACM serial.FTDI Serial ...

  3. android输入法开发软件,开发安卓系统Android和码输入法软件的全过程(二)

    2012年01月20日星期五 Android IMF给输入软件的编写给出的规范,也提供了很多的方便.这里从例子程序SoftKeyboard来认识. 1.软键盘界面的设计,可以用XML文件来做,这真是很 ...

  4. android文档怎么打开,安卓手机如何打开.tn6文件?

    01 安卓手机是不能直接打开tn6文件的.我们有〇个与TN6文件相关的已知软件程序,它们可以归类为〇种主要文件类型,通常这些文件被视为BinaryData格式,因此可以使用FileViewPro文件查 ...

  5. android dat怎么打开方式,安卓手机如何打开.dat文件?

    01 打开安卓手机[文件管理]-[本地文件]后即可找到[dat]文件,选择合适的方式打开.dat文件,比如直接打开.其他方式等. .DAT并不是一种标准文件.许多软件都使用这个扩展名,但文件含义不同. ...

  6. 库文件、静态库(lib)与动态库(dll)的生成与使用

    静态库 程序编译一般需经预处理.编译.汇编和链接几个步骤.在应用中,有一些公共代码是需要反复使用,就把这些代码编译为"库"文件:在链接步骤中,连接器将从库文件取得所需的代码,复制到 ...

  7. 【Android 逆向】修改运行中的 Android 进程的内存数据 ( Android 系统中调试器进程内存流程 | 编译内存调试动态库以及调试程序 )

    文章目录 一.Android 系统中调试器进程内存流程 二.编译内存调试动态库以及调试程序 三.博客资源 一.Android 系统中调试器进程内存流程 修改游戏运行中的内存 , 游戏运行之后 , 游戏 ...

  8. 【Android FFMPEG 开发】音视频基础 和 FFMPEG 编译 ( 音视频基础 | MPEG-4 标准 | Android 开发环境 | FFMPEG 交叉编译 | 安卓项目导入配置 )

    本篇博客代码及资源下载 : https://download.csdn.net/download/han1202012/10382762 文章目录 一. 音视频基础 1. 音频基础 (1) 声音要素 ...

  9. 【Android 安装包优化】使用 lib7zr.a 静态库处理压缩文件 ( 交叉编译 lib7zr.a 静态库 | 安卓工程导入静态库 | 配置 CMakeLists.txt 构建脚本 )

    文章目录 一.修改 7zr 交叉编译脚本 Android.mk 二.完整的 7zr 交叉编译脚本 Android.mk 三.交叉编译 lib7zr.a 静态库 四.Android Studio 导入 ...

最新文章

  1. android ajax 跨域更新本地html,本地webapp是怎么解决跨域问题的?
  2. Kinect for windows的脸部识别
  3. C++之指向对象成员函数的指针
  4. 从 wiscKey 看 LSMtree 的不足
  5. 秒懂 QPS、TPS、PV、UV、IP!
  6. 大数据实验报告总结体会_建设大数据中台架构思考与总结
  7. 关于deepearth的一点小问题
  8. GL中如何让画的点为圆形
  9. SpringBoot依赖管理,版本仲裁
  10. 程序员vim的最终解决方案
  11. SilverLight企业应用框架设计【一】整体说明
  12. 在线制作车牌效果图_价格低的防火板材行业专家在线为您服务
  13. 继承接口Java多线程(二)、启动一个线程的3种方式
  14. 概率论——伯努利和二项随机变量
  15. 专为Oracle数据库恢复而生 - PRM
  16. fh 幅频特性曲线怎么画fl_测量rc带通滤波器的幅频特性和相频特性-电子科技大学.ppt...
  17. 实现echarts图多个legend图例和自定义legend中字体颜色
  18. 架构师之路-秒杀系统优化思路
  19. 我不小心删除了dwm.exe。就是桌面窗口管理器的那个程序哈哈
  20. 航测新旗舰|大疆M300+赛尔102S

热门文章

  1. 【异或交换原理】按位进行异或操作,实现数的交换
  2. 卡尔曼滤波---实例讲解
  3. 用中断的方式实现delay延时的一点注释
  4. 2013 javaB1 世纪末的日期
  5. Cause: org.postgresql.util.PSQLException: ERROR: column province_id does not exist
  6. 算法练习day8——190326(猫狗队列、转圈打印矩阵、旋转正方形矩阵、反转单向双向链表、数N的加法组合)
  7. 猫、交换机和路由器的区别
  8. python oracle 运维,mysql oracle python连接
  9. Matlab画图中的小技巧
  10. linux实验串行端口程序设计,Linux下串口编程心得(转)