Android NDK 交叉编译C++代码生成.so共享库详细步骤

Android NDK 调用c++ stl 模板库(修改android.mk文件)

1  在需要调用模板库的文件前包含头文件:
 
   #include <iostream>
  #include <vector>
 
  此时编译可能不过,需要在android.mk文件内添加:
  
LOCAL_C_INCLUDES :=   /home/administrator/android-ndk-r5b/sources/cxx-stl/stlport/stlport     (ndk安装路径下的stl库)
 
 
 2  在 mk 文件前加入:
 
   APP_STL  :=  stlprot_static    (模板库以静态库的方式添加)
 
  ....
  LOCAL_LDLIBS := -L$(SYSROOT)/usr/lib  -llog \
 /home/administrator/android-ndk-r5b/sources/cxx-stl/stlport/libs/armeabi/libstlport_static.a
 
我的Android.mk文件中的内容为:

  1. LOCAL_PATH := $(call my-dir)
  2.  
  3. LOCAL_C_INCLUDES += external/stlport/stlport
  4. LOCAL_C_INCLUDES += bionic
  5. LOCAL_C_INCLUDES += bionic/libstdc++/include
  6.  
  7. LOCAL_SHARED_LIBRARIES := libstlport
  8.  
  9. GXPM_LIB_DIR := ../../../common/GoxceedPM
  10.  
  11. include $(CLEAR_VARS)
  12. #$(GXPM_LIB_DIR)/minidb/minilzo/minilzo.c \
  13.  
  14. GXPM_SRC_FILES := \
  15. $(GXPM_LIB_DIR)/zlib/adler32.c \
  16. $(GXPM_LIB_DIR)/zlib/compress.c \
  17. $(GXPM_LIB_DIR)/zlib/crc32.c \
  18. $(GXPM_LIB_DIR)/zlib/deflate.c \
  19. $(GXPM_LIB_DIR)/zlib/gzio.c \
  20. $(GXPM_LIB_DIR)/zlib/inffast.c \
  21. $(GXPM_LIB_DIR)/zlib/inflate.c \
  22. $(GXPM_LIB_DIR)/zlib/inftrees.c \
  23. $(GXPM_LIB_DIR)/zlib/trees.c \
  24. $(GXPM_LIB_DIR)/zlib/uncompr.c \
  25. $(GXPM_LIB_DIR)/zlib/zutil.c \
  26. $(GXPM_LIB_DIR)/lz4/lz4.c \
  27. $(GXPM_LIB_DIR)/lz4/lz4frame.c \
  28. $(GXPM_LIB_DIR)/lz4/lz4hc.c \
  29. $(GXPM_LIB_DIR)/lz4/xxhash.c \
  30. $(GXPM_LIB_DIR)/minilzo/minilzo.c \
  31. $(GXPM_LIB_DIR)/minidb/bitmap.c \
  32. $(GXPM_LIB_DIR)/minidb/buddy.c \
  33. $(GXPM_LIB_DIR)/minidb/compressor.cpp \
  34. $(GXPM_LIB_DIR)/minidb/compr_lz4.cpp \
  35. $(GXPM_LIB_DIR)/minidb/compr_lz77.cpp \
  36. $(GXPM_LIB_DIR)/minidb/compr_lzo.cpp \
  37. $(GXPM_LIB_DIR)/minidb/compr_zlib.cpp \
  38. $(GXPM_LIB_DIR)/minidb/db.cpp \
  39. $(GXPM_LIB_DIR)/minidb/hash.c \
  40. $(GXPM_LIB_DIR)/minidb/io.cpp \
  41. $(GXPM_LIB_DIR)/minidb/map.c \
  42. $(GXPM_LIB_DIR)/textcode_convert.c \
  43.  
  44. LOCAL_SRC_FILES := \
  45. $(GXPM_SRC_FILES) \
  46. gomedia.cpp
  47.  
  48. LOCAL_C_INCLUDES := \
  49. $(LOCAL_PATH)/../../../common/GoxceedPM/zlib/include \
  50. $(LOCAL_PATH)/../../../common/GoxceedPM/lz4 \
  51. $(LOCAL_PATH)/../../../common/GoxceedPM/minilzo \
  52. $(LOCAL_PATH)/../../../common/GoxceedPM/minidb \
  53. $(LOCAL_PATH)/../../../common/GoxceedPM/core \
  54. $(LOCAL_PATH)/../../../common/GoxceedPM \
  55.  
  56. LOCAL_LDLIBS := -llog
  57.  
  58. LOCAL_MODULE := gomedia
  59.  
  60. include $(BUILD_SHARED_LIBRARY)

Application.mk:

  1. APP_ABI := all
  2. APP_PLATFORM := android-8
  3. APP_STL := stlport_static
  4. APP_CPPFLAGS := -fpermissive

aa

Android NDK 交叉编译C++代码生成.so共享库详细步骤的更多相关文章

  1. 关于Android NDK中调用第三方的动态库

    因为最近在整合Android 上RTSP播放器的网络库,因需要调用自己编译的网络库,调用一直出现问题,开始时是直接在Android.mk 中加入LOCAL_SHARED_LIBRARIES := li ...

  2. 【初体验】macos下android ndk交叉编译hello world,并拷贝到android手机上执行

    1.机器上以前安装了java 1.8(貌似android ndk不需要java) 2. 下载android ndk,版本是android-ndk-r14b (比较奇怪,我下载了最新的android-n ...

  3. ndk学习9: 动态使用共享库

    动态使用共享库函数 dll_main      环境介绍 续上节代码 目录结构:   android.mk如下: LOCAL_PATH := $(call my-dir) include $(CLEA ...

  4. Android NDK环境搭建及调用JNI的简单步骤

    转载请注明:http://www.cnblogs.com/tiantianbyconan/p/3396595.html Java Native Interface (JNI)标准是java平台的一部分 ...

  5. Android NDK编程,引入第三方.so库

    android自带的编译工具NDK进行编译时(非单纯的调用第三方.so而是进行ndk编程),armeabi以及armeabi-v7a文件夹下的第三方so文件将会被删除,只会产生编译后的so文件,其他的 ...

  6. Linux下搭建iSCSI共享存储详细步骤(服务器模拟IPSAN存储)

    一.简介 iSCSI(internet SCSI)技术由IBM公司研究开发,是一个供硬件设备使用的.可以在IP协议的上层运行的SCSI指令集,这种指令集合可以实现在IP网络上运行SCSI协议,使其能够 ...

  7. Android NDK 使用自己的共享库(Import Module)

    LOCAL_PATH := $(call my-dir)//标准mk语句,指编译路径,所有mk文件第一句都是这个 /**这个模块表示引用了一个本地的静态库include $(CLEAR_VARS) / ...

  8. Linux学习笔记——如何使用共享库交叉编译

    0.前言     在较为复杂的项目中会利用到交叉编译得到的共享库(*.so文件).在这样的情况下便会产生下面疑问,比如:     [1]交叉编译时的共享库是否须要放置于目标板中,假设须要放置在哪个文件 ...

  9. Linux学习笔记——怎样在交叉编译时使用共享库

    0.前言     在较为复杂的项目中会利用到交叉编译得到的共享库(*.so文件).在这样的情况下便会产生下面疑问,比如:     [1]交叉编译时的共享库是否须要放置于目标板中,假设须要放置在哪个文件 ...

随机推荐

  1. es2015(es6)学习总结

    1.三种声明方式 var:它是variable的简写,可以理解成变量的意思. let:它在英文中是“让”的意思,也可以理解为一种声明的意思. const:它在英文中也是常量的意思,在ES6也是用来声明 ...

  2. 转:趋势科技研究员从漏洞、漏洞利用、Fuzz、利用缓解四个方面总结的一张脑图

  3. 2018 ACM-ICPC 焦作网络赛

    Problem A Problem B 简单题,做下背包就好了. Problem C Problem D Problem E Problem F Problem G Problem H Problem ...

  4. 循序渐进PYTHON3(十三) --5-- DJANGO请求处理流程

    上面的流程图可以大致描述Django处理request的流程,可以分为以下几个步骤: 1. 用户通过浏览器请求一个页面 2. 请求到达Request Middlewares,中间件对request做一 ...

  5. 丑数(LintCode)

    丑数 设计一个算法,找出只含素因子3,5,7 的第 k大的数. 符合条件的数如:3,5,7,9,15...... 您在真实的面试中是否遇到过这个题? Yes 样例 如果k=4, 返回 9 挑战 要求时 ...

  6. HZAU 1207 Candies(线段树区间查询 区间修改)

    [题目链接]http://acm.hzau.edu.cn/problem.php?id=1207 [题意]给你一个字符串,然后两种操作:1,将区间L,R更新为A或者B,2,询问区间L,R最长的连续的B ...

  7. UGUI的优点新UI系统四 开源

    UGUI的优点新UI系统四 开源 新UI系统是开源的,所以开发者可以看到新UI系统实现的源码,并加以修改和使用. 开源授权协议——MIT/X11 Unity所搭载的新UI系统,是在开源授权协议MIT/ ...

  8. 具有jQuery背景的程序员如何转换为AngularJS思考模式(译)

    最近一直在研究angularjs,最大的感受就是它和之前的jQuery以及基于jQuery的各种库设计理念完全不同,如果不能认识到这点而对于之前做jQuery开发的程序员,去直接学习angularjs ...

  9. apache配置httpd.conf相关

    1.apache开启压缩AddOutputFilterByType 找到并打开apache/conf目录中的httpd.conf文件 在httpd.conf中打开deflate_Module,head ...

  10. Python - 字符和字符值之间的转换

    字符和字符值之间的转换 Python中, 字符和字符值, 直接的转换, 包含ASCII码和字母之间的转换,Unicode码和数字之间的转换; 也可以使用map, 进行批量转换, 输出为集合, 使用jo ...