Android NDK中C++ STL库动态和静态链接
来源:互联网 发布:js urlencode转码 编辑:程序博客网 时间:2024/05/22 15:36
0x00 本文参考
本文参考Android NDK中C++运行时库介绍。
我们在开发NDK的时候,经常需要使用C++ STL库开发,那么这些库是如何和我们的程序链接的呢?
0x01 C++ STL分类
注意:libstdc++.so是android源码工程下,~/android-4.2.2/bionic/libstdc++目录下的代码生成的。这个so,在手机中位于/system/lib/libstdc++.so,每个进程都会默认加载一份。可以通过cat /proc/pid/maps来查看到。
这些静态链接库和动态链接库都位于哪呢?
答案是位于ndkpat/sources/cxx-stl。我们截图看下这个目录:
我们可以清晰的对照两张图。libstlport_shared.so和libstlport_static.a都在这个目录的libs/armeabi中。
那么我们如何静态或者动态链接某个库呢?
答案是:
在Application.mk中,加入:APP_STL := stlport_static,表示需要静态链接libstlport_static.a。最后在工程目录libs/armeabi目录中,只会生成要编译的so,由于这个so静态链接了libstlport_static.a,所以文件的大小会比较大。
如果加入:APP_STL := stlport_shared,表示需要动态链接libstlport_shared.so。最后在工程目录libs/armeabi目录,会生成要编译的so(体积较小,没有静态链接)和libstlport_shared.so。这两个so都会被放入/data/data/packageName/libs目录下。在使用中,需要同时System.loadlibrary两个so。
0x02 在NDK中使用第三方库
参考JNI系列教程之四——在NDK中使用第三方库。
0x03 Android源码环境中使用stl
stl源码位于~/android-4.2.2/external/stlport目录下。
LOCAL_SHARED_LIBRARIES := \
libstlport \
LOCAL_C_INCLUDES := \
bionic \
external/stlport/stlport \
bionic是需要的,里面虽然不是标准库文件,但标准库文件可能需要它。
另外,并不是所有的STL功能都能用,只是常用的一部分。
- Android NDK中C++ STL库动态和静态链接
- android ndk 静态链接库
- 【C++】静态链接库和动态链接库
- Android NDK编译静态链接库及动态链接库(librtmp编译小白填坑)
- android通过C代码实现动态和静态链接
- gcc中静态链接库和动态链接库
- android开发 NDK 编译和使用静态库、动态库
- android开发 NDK 编译和使用静态库、动态库
- android开发 NDK 编译和使用静态库、动态库
- android开发 NDK 编译和使用静态库、动态库
- android开发 NDK 编译和使用静态库、动态库
- android开发 NDK 编译和使用静态库、动态库
- android开发 NDK 编译和使用静态库、动态库
- android开发 NDK 编译和使用静态库、动态库
- android开发 NDK 编译和使用静态库、动态库
- android开发 NDK编译和使用静态库、动态库
- android开发 NDK 编译和使用静态库、动态库
- android开发 NDK 编译和使用静态库、动态库
- C语言命令行参数
- 感知机模型
- 监听的四种方法
- C#.net页面跳转的七种方法
- Cf Edu 15 C Cellular Network 二分
- Android NDK中C++ STL库动态和静态链接
- 图片压缩命令
- vs2010下release版本调试设置
- React 入门实例教程
- CodeForces 635C XOR Equation 数学 公式
- 自定义set比较函数
- POJ 1265 pick公式
- HDU 1754 I Hate It 线段树入门
- Ele SOA Container