android静态库,ios静态库依赖静态库

android的动态加载和静态加载的区别

两者区别:

站在用户的角度思考问题,与客户深入沟通,找到邓州网站设计与邓州网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:成都网站建设、网站制作、企业官网、英文网站、手机端网站、网站推广、域名注册、虚拟空间、企业邮箱。业务覆盖邓州地区。

一,静态库的使用需要:

1

包含一个对应的头文件告知编译器lib文件里面的具体内容

2

设置lib文件允许编译器去查找已经编译好的二进制代码

二,动态库的使用:

程序运行时需要加载动态库,对动态库有依赖性,需要手动加入动态库

三,依赖性:

静态链接表示静态性,在编译链接之后,

lib库中需要的资源已经在可执行程序中了,

也就是静态存在,没有依赖性了

动态,就是实时性,在运行的时候载入需要的资源,那么必须在运行的时候提供

需要的

动态库,有依赖性,

运行时候没有找到库就不能运行了

四,区别:

简单讲,静态库就是直接将需要的代码连接进可执行程序;动态库就是在需要调用其中的函数时,根据函数映射表找到该函数然后调入堆栈执行。

做成静态库可执行文件本身比较大,但不必附带动态库

做成动态库可执行文件本身比较小,但需要附带动态库

五:

首先纠正所谓“静态连接就是把需要的库函数放进你的exe之中”的说法。在真实世界中,有三个概念:Use

static

libary,

static

linked

DLL,

dynamic

linked

DLL.

多数人混淆了static

libary

static

linked

DLL的概念,当然他们有似是而非的“相似之处”,比如都用到.lib,下面具体说明。

使用静态库(Use

static

libary)是把.lib和其他.obj一起build在目标文件中,目标文件可以是.exe,也可以是.dll或.oxc等。一般情况下,可以根本就没有“对应的”.dll

文件,如C

Run

Time(CRT)库。一个例子就是,写一个main(){},build出来并不是只有几个字节,当然有人会说那还有exe文件头呢?是,即使加上文件头的尺寸,build出的执行文件仍然“莫名的大”。实际上那多出来的部分就是CRT静态库。姑且可以把静态库.lib理解成外部程序的obj文件比较合理,它包含了函数的实现。

android 怎么引用一个静态库

关于编译静态库:

android.mk和xxx.cpp放在新文件夹里:

LOCAL_PATH:= $(call my-dir)include $(CLEAR_VARS)

LOCAL_SRC_FILES:= \xxx.cpp

LOCAL_MODULE:= libx

include $(BUILD_STATIC_LIBRARY)

生成静态库libx.a文件

android已有动态库怎么编译静态库

在eclipse工程目录下建立一个jni的文件夹

在jni文件夹中建立Android.mk和Application.mk文件

Android.mk文件:

Android提供的一种makefile文件,用来指定诸如编译生成so库名、引用的头文件目录、需要编译的.c/.cpp文件和.a静态库文件等。详见附件中的Android.mk。

Application.mk文件:

定义了项目的一些细节,比如APP_ABI := x86(编译X86平台库)、APP_PLATFORM := android-9(使用android-9以上的平台库)。

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

用cd命令移至jni目录,运行/mnt/500G/public/NDK/android-ndk-r7b/ndk-build命令,这时命令行中可能会出现编译错误,比如头文件找不到,函数找不到等等,细心找找就能改掉。

编译成功后,在工程目录下libs/x86中就会生成你想要的.so库。

Android中静态库和共享库的区别

简单来讲:

静态库是在连接阶段直接拷贝到代码中使用的,而共享库是由加载器加载到内存,在运行时使用的。

编译出来的静态库(这里指jar包)里每个java文件对应的class文件都单独存在,可以直接导入Eclipse等IDE使用

而编译出来的共享库(jar包),内部是Android字节码Dex格式的文件,一般无法导入Eclipse等IDE使用。Android.mk中由BUILD_JAVA_LIBRARY指定生成共享BUILD_STATIC_JAVA_LIBRARY指定生成静态库。

如何在android使用已经有的静态库

关于编译静态库:

android.mk和xxx.cpp放在新文件夹里:

LOCAL_PATH:= $(call my-dir)include $(CLEAR_VARS)

LOCAL_SRC_FILES:= \xxx.cpp

LOCAL_MODULE:= libx

include $(BUILD_STATIC_LIBRARY)

生成静态库libx.a文件

关于链接静态库:

有两种方法:

1、把libx.a文件放在android.mk同一目录下,添加:

LOCAL_PREBUILT_LIBS += libx.a

2、同上,添加:

include $(CLEAR_VARS)LOCAL_MODULE := libxLOCAL_SRC_FILES := libx.ainclude $(PREBUILT_STATIC_LIBRARY)LOCAL_STATIC_LIBRARIES += libx

貌似第二种是NDK里比较常见,第一种在其他的android.mk里比较常见。

打包android的时候怎么引入一些静态库

方法1 :

人为建立上面的文件夹并将静态库拷入;

方法2 :

就是通过编译配置来做上面的动作。具体如下:

1. 将动态库的编译部分和静态库的编译部分分开;

2. 在工作目录下建立一个lib文件夹(必须是这个名字),将第三方的静态库拷贝进去,并且增加一个编译配置文件Android.mk,具体内容如下:

Android wbr: wbr编译动态库时如何引入静态库

这个编译配置文件就是要在obj下生成中间文件,供其他地方使用。

文件列表如下:

Android wbr: wbr编译动态库时如何引入静态库

3. 在工作目录下建立一个文件夹,并且将生成动态库的相关文件全部拷贝进去。这里我们起的名字是src,当然也可以起其他名字。Android.mk内容如下:

Android wbr: wbr编译动态库时如何引入静态库

这里只要直接引入第三方库就可以了。

文件列表如下:

Android wbr: wbr编译动态库时如何引入静态库

third_lib.h是静态库的头文件,test.cpp很简单,就是一个函数里面顺序调了一下静态库里开放的函数,内容如下:

Android wbr: wbr编译动态库时如何引入静态库

3. 工作目录下增加一个编译配置文件Android.mk,作用就是查找工作目录下所有的子目录中的Android.mk来编译。Android.mk的内容如下:

Android wbr: wbr编译动态库时如何引入静态库

好,工作都做完了,下面进入工作目录mm -B 试一下,可以顺利编译成功。


分享标题:android静态库,ios静态库依赖静态库
标题链接:http://csdahua.cn/article/dsdccgo.html
扫二维码与项目经理沟通

我们在微信上24小时期待你的声音

解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流