一、指定库文件生成到哪个目录

在Android.mk文件中,可以指定最后的目标安装路径,

LOCAL_MODULE_PATH和LOCAL_UNSTRIPPED_PATH来指定。不同的文件系统路径用以下的宏进行选择:

TARGET_ROOT_OUT:表示根文件系统。

TARGET_OUT:表示system文件系统。

TARGET_OUT_DATA:表示data文件系统。

用法如:

CAL_MODULE_PATH:=$(TARGET_ROOT_OUT)

二、静态库

1) 生成静态库

#Test Static Lib

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_SRC_FILES:= /

helloworld.c

LOCAL_MODULE:= libtest_static

#LOCAL_C_INCLUDES :=

#LOCAL_STATIC_LIBRARIES :=

#LOCAL_SHARED_LIBRARIES :=include$(BUILD_STATIC_LIBRARY)

# BUILD_STATIC_LIBRARY means generate a static library

三、 动态库

1)生成动态库

#Test Shared Lib

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_SRC_FILES:= /

helloworld.c

LOCAL_MODULE:= libtest_shared

TARGET_PRELINK_MODULES := false

#LOCAL_C_INCLUDES :=

#LOCAL_STATIC_LIBRARIES :=

#LOCAL_SHARED_LIBRARIES :=

include $(BUILD_SHARED_LIBRARY)

#BUILD_SHARED_LIBRARY  means a dynamic   lib

四、库的调用

1)编写my_add.c源文件

/*my_add.c*/

#include

int add(int x, int y)

{

int sum = x + y;

printf("The sum of %d and %d is %d\n", x, y, sum);

return sum;

}

对应的mk文件

LOCAL_PATH:=$(call my-dir)

include $(CLEAR_VARS)

LOCAL_SRC_FILES:= my_add.c

LOCAL_MODULE:=libmy_add

LOCAL_PRELINK_MODULE := false

include $(BUILD_SHARED_LIBRARY)

写好源文件和mk文件之后可以编译,生成库文件

2)调用库函数

写库文件的头函数

/*my_add.h*/

int add(int x, int y);    //对需要调用的函数在这个头文件里头进行声明

写调用库函数的程序的源文件

/*

libtest.c

*/

#include

#include"my_add.h"      //注意在这里把头文件包括进来

int main()

{

add(3,4);           //库里面的函数

printf("Done\n");

return 0;

}

编写要用的mk文件

LOCAL_PATH:=$(call my-dir)

include $(CLEAR_VARS)

LOCAL_SRC_FILES:=libtest.c

LOCAL_MODULE:=lib_test

LOCAL_SHARED_LIBRARIES:=libmy_add      //my_add 是要引用的库文件名字,可以指定库所在的路径,如果不确定路径,则生成动态库和引                                         //用动态库都采用默认路径

我们知道在android.mk里面包含着

LOCAL_STATIC_LIBRARIES := libxml2

但是这个静态库的路径是固定的

如果我们想自己找个路径使其能够识别那么我们就可以使用下面的办法:

LOCAL_LDLIBS += -lxml

或者

LOCAL_LDFLAGS += $(LOCAL_PATH)/libtest.a(可以任意指定路径)

这两种方式都是可以的。

android静态库动态库,Android 动态库和静态库相关推荐

  1. 【Android NDK 开发】Android Studio 使用 CMake 导入动态库 ( 构建脚本路径配置 | 指定动态库查找路径 | 链接动态库 )

    文章目录 I . CMake 引入动态库与静态库区别 II . Android Studio 中 CMake 引入动态库流程 III . 指定动态库查找路径 IV . 链接函数库 V . 完整代码示例 ...

  2. 【Android NDK 开发】NDK 交叉编译 ( Ubuntu 中交叉编译动态库 | Android Studio 中配置使用第三方动态库 )

    文章目录 I . 动态库 与 静态库 II . 编译动态库 III. Android Studio 使用第三方动态库 IV . Android Studio 关键代码 V . 博客资源 I . 动态库 ...

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

    1.多文件编译 多文件编译共有两种方式: (1) 在Android.mk中一一添加 LOCAL_PATH:= $(call my-dir) #定义当前模块的相对路径 include $(CLEAR_V ...

  4. android ndk 动态库_百度经验,android ndk 动态库

    android ndk开发经常遇到了动态库的问题,本文主要介绍: ① 动态链接库的生成: ② 在Java和C混合编程的情况下如何调用第三方动态链接库: ③ 通过jar包的方式间接调用第三方动态链接库: ...

  5. 【Android 逆向】Android 进程注入工具开发 ( 远程进程注入动态库文件操作 | 注入动态库 加载 业务动态库 | 业务动态库启动 | pthread_create 线程开发 )

    文章目录 前言 一.加载 libnattive.so 动态库 二. libnattive.so 动态库启动 三. pthread_create 线程开发 四. 线程执行函数 前言 libbridge. ...

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

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

  7. android 日历翻页动画,Android开源库合集:轻松实现Android动态,炫目:日历效果...

    前言: 了解过那种动态,炫目的日历效果吗?你知道是怎么 操作的嘛?是否想过,用UI就可以实现,对,也许你说的对,不过UI只是都是动态效果的一部分.那么今天用Annroid开源库,来告诉你android ...

  8. 阿里图标字体库的动态使用Android

    android里的图标之前一直都是使用图片,一个图标需要不同尺寸的几张图片,无形的会增大资源包,而阿里图标字体库是矢量的,使用的是字符,可以使安装包变得更轻量,于是决定使用阿里图标字体库 . 传送门: ...

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

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

  10. GCC : 什么是编译?什么是静态库?什么是动态库?怎么生成?优先级?

    本文旨在让大家真正明白C程序如何运行.库文件的种类区别.如何生成.如何使用等! 一.简介: gcc 最初是 "GNU C Compiler" 的简称,只是当作一个 C 语言的编译器 ...

最新文章

  1. javascript高级程序设计(第3版)之《script元素》
  2. PyTorch模型的保存加载以及数据的可视化
  3. 数据离散化 - 等宽等频聚类离散 - Python代码
  4. ASP.NET 5 - $.ajax post JSON.stringify(para) is null
  5. Opencv--图像处理之一阶和二阶偏导数
  6. 17秋 软件工程 团队第五次作业 Alpha Scrum12
  7. python的核心理念_python核心基础 - 草稿
  8. .set伪指令(mips)
  9. js动态加载css文件和js文件的方法
  10. 评论计算机课程讲师教学质量,浅谈信息技术课堂评价的策略
  11. HDOJ--2112--HDU Today
  12. 服务器解析请求的基本原理
  13. datagrivew删除列_c# 如何获取datagrivew 表里面名称为card_id的一列,并把这列里面的元素循环...
  14. A callback was made on a garbage collected delegate of type...
  15. 我理解的国密知识与加密过程
  16. HDU 4489 找出n!个全排列数中的“波浪数” dp 思维,全排列
  17. STM32 ST-LINK Utility介绍、下载、安装、使用方法
  18. 路由器有外派信号但无服务器,路由器有信号没网络?4个检查你做到了吗?后悔才知道!...
  19. 打印时的纸张大小尺寸
  20. MIT2020年力作:机器学习加速器综述

热门文章

  1. python中cv的差值_python+opencv实现移动侦测(帧差法)
  2. xyz文件怎么生成三维模型_根据三维空间坐标点如何构建三维模型
  3. linux 编译cgal,Linux(Ubuntu)安装CGAL
  4. 架构图、用例图、流程图、时序图、类图
  5. Oracle RAC详解
  6. MongoDB 清理数据
  7. 1.4亿在线背后-QQ-IM后台架构的演化与启示
  8. 联创机房管理系统服务器密码,高校机房管理系统解决方案.doc
  9. java知识竞赛题库_java程序设计题库
  10. Twaver-HTML5基础学习(9)HTML节点(HTMLNode)