NDK 编译和使用静态库、动态库

情况一:编译静态库

情况二:编译动态库

情况三:编译动态库+静态库

情况四:已有第三方静态库(动态库),编译静态库(动态库)

默认所有代码和文件在$project/jni下,否则特殊说明。

情况一:编译静态库

文件Android.mk:

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE    := hello-jni
LOCAL_SRC_FILES := hello-jni.c
include $(BUILD_STATIC_LIBRARY)

文件Application.mk:

APP_MODULES:=hello-jni

情况二:编译动态库

文件Android.mk:

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE    := hello-jni
LOCAL_SRC_FILES := hello-jni.c
include $(BUILD_SHARED_LIBRARY)

情况三:编译动态库+静态库

文件Android.mk:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)
LOCAL_MODULE    := mylib_static
LOCAL_SRC_FILES := src.c
include $(BUILD_STATIC_LIBRARY)

include $(CLEAR_VARS)
LOCAL_MODULE    := mylib_shared
LOCAL_SRC_FILES := src2.c

LOCAL_STATIC_LIBRARIES:= mylib_static

include $(BUILD_SHARED_LIBRARY)

情况四:已有第三方静态库(动态库),编译静态库(动态库)

文件Android.mk:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)
LOCAL_MODULE := thirdlib1      # name it whatever
LOCAL_SRC_FILES :=$(TARGET_ARCH_ABI)/libthird1.a     # or $(so_path)/libthird1.so
#LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/include
include $(PREBUILT_STATIC_LIBRARY)    #or PREBUILT_SHARED_LIBRARY

include $(CLEAR_VARS)
LOCAL_MODULE    := mylib_use_thirdlib
LOCAL_SRC_FILES := src.c

LOCAL_STATIC_LIBRARIES:= thirdlib1       #or LOCAL_SHARED_LIBRARY 

include $(BUILD_SHARED_LIBRARY)   #如果编译静态库,需要Application.mk

转载于:https://www.cnblogs.com/liwentao1091/p/4511255.html

NDK 编译和使用静态库、动态库相关推荐

  1. 基于NDK编译Android平台的FFmpeg动态库

    需求 FFmpeg在Linux平台(如Ubuntu)上的支持已经比较完善了,如前述文章介绍 http://blog.csdn.net/ericbar/article/details/73702061, ...

  2. 【Android NDK 开发】Visual Studio 2019 使用 CMake 开发 JNI 动态库 ( 动态库编译配置 | JNI 头文件导入 | JNI 方法命名规范 )

    文章目录 I . JNI 与 NDK 区别 II . Visual Studio 编译动态库 III. 配置 导入 jni.h 头文件 IV . IntelliJ IDEA Community Edi ...

  3. VS2015编译32位Opencv310(动态库+静态库,文末有下载链接)

    VS2015编译32位Opencv310(动态库+静态库 编译过得,可以直接用的: http://download.csdn.net/download/longzaihuaxia/9802510 之前 ...

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

    0. 引言 UNIX是一个注册商标,是要满足一大堆条件并且支付可观费用才能够被授权使用的一个操作系统.linux是unix的克隆版本,是由其创始人Linus和诸多世界知名的黑客手工打造的一个操作系统. ...

  5. 【Android NDK 开发】Android.mk 配置动态库 ( Android Studio 配置动态库 | 动态库加载版本限制 | 本章仅做参考推荐使用 CMake 配置动态库 )

    文章目录 I . Android Studio 中使用 Android.mk 配置动态库 总结 II . 第三方动态库来源 III . 配置 Android.mk 构建脚本路径 IV . 预编译 第三 ...

  6. NDK01-打包静态库 动态库在mk和cmake环境配置使用

    动态库和静态库 动态库: libxxx.so 运行的时候,才会去加载,加载一次就在内存中存在副本,其他地方使用就都是公用的.使用场景就是 高德百度sdk对外开房 静态库: libxxx.a 编译期把静 ...

  7. Ubuntu下CodeBlocks的安装、配置及静态库动态库的简单使用举例

    1.  从Ubuntu Software Center中搜索Code::Blocks并安装: 2.  在第一次启动时选择GNU GCC Compiler作为默认的编译器: 3.  生成静态库并调用操作 ...

  8. Linux-(C/C++)生成并使用静态库/动态库

    静态库/动态库概要 在Windows下静态库的后缀为:.lib.动态库后缀为:.dll:而在Linux下静态库的后缀为:.a.动态库的后缀为:.so. 那么什么是静态库呢? 首先我们来看看程序编译的大 ...

  9. 【Linux后端开发必问】操作系统系列(Linux常用命令、文件权限修改、静态与动态库的制作)

    目录 一.说说常用的Linux命令 二.文件权限如何修改 三.静态库和动态库的制作 1.静态库 2.动态库的制作 3.两者优势对比 一.说说常用的Linux命令 1.cd命令:用于切换当前目录: 2. ...

最新文章

  1. Sqoop数据分析引擎安装与使用
  2. wpservice.exe应用程序错误
  3. python3 for_python3 for循环-range遍历
  4. 2springboot:快速创建springboot项目
  5. fpga 输入信号除了1和0还有别的状态?
  6. 【java】读取html乱码
  7. git操作时:遇到提示Unable to create ‘D:/xxx/.git/index.lock‘: File exists.的解决办法解决方案
  8. 计算机管理 服务在哪,信息服务,教您哪里打开Internet信息服务(IIS)管理器
  9. 三年java不会线程_Java后端开发三年多线程你都懂,问你异步编程你说你没听过???...
  10. Go语言优秀的Revel开源框架推荐
  11. FlashFXP使用说明
  12. python 3.7 安装 spyder‑kernels 模块
  13. 天堂2 mysql一闪而过_天堂2革命闪退怎么办_天堂2革命彻底解决游戏闪退方法_手心游戏...
  14. 《精益创业》- 天下大事必作于细,天下难事必作于易
  15. 儿童台灯怎么选对眼睛好?分享央视推荐的护眼灯
  16. 开源GIS浅谈 【转】
  17. 大多数程序员都懂的java虚拟机:C1编译器从字节码到HIR
  18. 共享单车创始人正在沦为资本家的傀儡?
  19. PS磨皮教程系列一:什么叫磨皮以及什么适合磨皮
  20. c# 刻度:毫米 英寸 像素转换

热门文章

  1. python【蓝桥杯vip练习题库】ADV-301 字符串压缩
  2. python【力扣LeetCode算法题库】面试题 08.11- 硬币
  3. 【Deep Learning笔记】Optic Disc 数据集
  4. Android移动开发之【Android实战项目】activity生命周期与Java中@Override的作用
  5. python【蓝桥杯vip练习题库】ADV-305输出二进制表示
  6. 企业网站优化如何提升网站收录?
  7. 浅析个人网站建设需要注重的建设问题
  8. java excel读取操作,Java 操作 Excel (读取Excel2003 2007,Poi兑现)
  9. mysql触发器执行失败_mysql-Mysql数据库触发器执行不成功
  10. 0x000000f怎么修复 win10_win10无法启动也能进安全模式?用这个方法就OK