Android 动态库和静态库
来源:互联网 发布:不可思议迷宫 知乎 编辑:程序博客网 时间:2024/05/17 23:22
一、指定库文件生成到哪个目录
在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 <stdio.h>
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<stdio.h>
#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 是要引用的库文件名字,可以指定库所在的路径,如果不确定路径,则生成动态库和引 //用动态库都采用默认路径
3)android.mk指定第三方的静态库路径
我们知道在android.mk里面包含着
LOCAL_STATIC_LIBRARIES := libxml2
但是这个静态库的路径是固定的
如果我们想自己找个路径使其能够识别那么我们就可以使用下面的办法:
LOCAL_LDLIBS += -lxml
或者
LOCAL_LDFLAGS += $(LOCAL_PATH)/libtest.a(可以任意指定路径)
这两种方式都是可以的。
- Android 动态库和静态库
- android 静态库和动态库编译
- 动态库和静态
- android下java的静态库和动态库
- android动态库和静态库的编译
- android开发 NDK 编译和使用静态库、动态库
- Android - 动态库和静态库用法总结
- android开发 NDK 编译和使用静态库、动态库
- android开发 NDK 编译和使用静态库、动态库
- android开发 NDK 编译和使用静态库、动态库
- android开发 NDK 编译和使用静态库、动态库
- android开发 NDK 编译和使用静态库、动态库
- android开发 NDK 编译和使用静态库、动态库
- android开发 NDK 编译和使用静态库、动态库
- Android下Java的静态库和动态库
- android开发 NDK 编译和使用静态库、动态库
- android开发 NDK编译和使用静态库、动态库
- android开发 NDK 编译和使用静态库、动态库
- python 栈
- JSP中pageEncoding contentType 字符编码个人归纳总结
- mysql创建index索引
- onCreateOptionsMenu()方法
- SqlMap中中$与#的区别
- Android 动态库和静态库
- codeforces Misha and Permutations Summation
- TeamFoundation 实现团队项目管理
- XAMPP Error: Apache shutdown unexpectedly. 解决思路
- cocos2d-x-3.3-016-国际化string.xml
- OC - 单例模式
- eclipse下安装pydev,google app engine 插件无法显示设置的问题
- Q1.7 set Matrix zeroes
- tinyhttpd-0.1.0和win移植版