NDK 编译protoc buf lite心得

转载 2015年11月19日 18:44:01

首先感谢 http://blog.sina.com.cn/s/blog_632dcf7501011us2.html 和http://blog.sina.com.cn/s/blog_632dcf7501012bo0.html 给予了我很大的帮助。说说自己在编译过程中遇到的一些问题以及处理方法。

我的编译环境为 windows8 + NDK r8e, protoc buf 版本为2.5.0。

首先将protoc buf 目录里的\protobuf-2.5.0\src\google目录下的所有文件拷贝到jni目录下。目录结构图如下

然后将protobuf-2.5.0\vsprojects目录下的config.h文件拷贝到jni/google/protobuf/目录下。

配置android.mk,其详细内容如下

[html] view plaincopy
  1. # Copyright (C) 2009 The Android Open Source Project  
  2. #  
  3. # Licensed under the Apache License, Version 2.0 (the "License");  
  4. # you may not use this file except in compliance with the License.  
  5. # You may obtain a copy of the License at  
  6. #  
  7. #      http://www.apache.org/licenses/LICENSE-2.0  
  8. #  
  9. # Unless required by applicable law or agreed to in writing, software  
  10. # distributed under the License is distributed on an "AS IS" BASIS,  
  11. # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  
  12. # See the License for the specific language governing permissions and  
  13. # limitations under the License.  
  14. #  
  15. LOCAL_PATH:= $(call my-dir)  
  16.   
  17. include $(CLEAR_VARS)  
  18.   
  19. LOCAL_CPPFLAGS += -frtti  
  20.   
  21. LOCAL_MODULE    :libnative  
  22.   
  23. LOCAL_CPP_EXTENSION := .cc .cpp  
  24.   
  25. #LOCAL_CPPFLAGS += -fexceptions  
  26. #LOCAL_CFLAGS    := -Werror  
  27. LOCAL_SRC_FILES :=  NativeEntry.cpp \  
  28.                                         google/protobuf/io/coded_stream.cc \  
  29.                                         google/protobuf/stubs/common.cc \  
  30.                                         google/protobuf/extension_set.cc \  
  31.                                         google/protobuf/message_lite.cc \  
  32.                                         google/protobuf/stubs/once.cc \  
  33.                                         google/protobuf/repeated_field.cc \  
  34.                                         google/protobuf/stubs/stringprintf.cc \  
  35.                                         google/protobuf/wire_format_lite.cc \  
  36.                                         google/protobuf/io/zero_copy_stream.cc \  
  37.                                         google/protobuf/io/zero_copy_stream_impl_lite.cc \  
  38.   
  39.               
  40. LOCAL_C_INCLUDES += . \  
  41.                                         $(LOCAL_PATH)/google \  
  42.                                         $(LOCAL_PATH)/google/protobuf \  
  43.               
  44. LOCAL_LDLIBS    := -llog -ldl  -lgcc -pthread \  
  45.                                 D:/progrome_tools/adt-bundle-windows-x86_64/android-ndk-r8e-windows-x86_64/android-ndk-r8e/sources/cxx-stl/gnu-libstdc++/4.7/libs/armeabi/libgnustl_static.a  
  46.   
  47. ifndef NDK_ROOT  
  48. include external/stlport/libstlport.mk  
  49. endif  
  50.   
  51. include $(BUILD_SHARED_LIBRARY)  

接下来配置Application.mk

[html] view plaincopy
  1. # The ARMv7 is significanly faster due to the use of the hardware FPU  
  2. APP_ABI :armeabi armeabi-v7a  
  3. APP_PLATFORM :android-7  
  4. APP_STL :gnustl_static  
然后修改config.h,注意网上有人建议不用修改config.h文件而是把backward_warning.h文件include进来.如果这样在编译的时候还是警告该文件以后的版本将不再使用。所以这种方式还是不可取,还是老老实实的修改config.h文件比较好。其config.h的文件内容如下

[html] view plaincopy
  1. /* protobuf config.h for MSVC.  On other platforms, this is generated  
  2.  * automatically by autoheader / autoconf / configure. */  
  3.   
  4. /* the location of <hash_map> */  
  5. //#define HASH_MAP_H <hash_map>  
  6.   
  7. /* the namespace of hash_map/hash_set */  
  8. // Apparently Microsoft decided to move hash_map *back* to the std namespace  
  9. // in MSVC 2010:  
  10. //   http://blogs.msdn.com/vcblog/archive/2009/05/25/stl-breaking-changes-in-visual-studio-2010-beta-1.aspx  
  11. // TODO(kenton):  Use unordered_map instead, which is available in MSVC 2010.  
  12. #if _MSC_VER < 1310 || _MSC_VER >= 1600  
  13. #define HASH_NAMESPACE std  
  14. #else  
  15. #define HASH_NAMESPACE stdext  
  16. #endif  
  17.   
  18. /* the location of <hash_set> */  
  19. #define HASH_SET_H <ext/hash_set>  
  20. #define HASH_MAP_H <ext/hash_map>  
  21. //#define HASH_NAMESPACE _gnu_cxx  
  22.   
  23. /* define if the compiler has hash_map */  
  24. //#define HAVE_HASH_MAP 1  
  25.   
  26. /* define if the compiler has hash_set */  
  27. //#define HAVE_HASH_SET 1  
  28.   
  29. #define HAVE_PTHREAD 1  
  30.   
  31. /* define if you want to use zlib.  See readme.txt for additional  
  32.  * requirements. */  
  33. // #define HAVE_ZLIB 1  

接下就是在eclipse下配置ndk编译环境不需要cywin,具体方法请参见http://blog.csdn.net/maojudong/article/details/7261986


转贴:http://blog.csdn.net/chujiujiao/article/details/8986997

ProtocolBuf协议说明

1、Protocol是一种很好的数据传输协议; 2、如果你还在为解决高并发数据传输和带宽而发愁的话,这是你的福音。 3、在招聘过程中,发现尽管Protocolbuf已经出现了很长时间,但其实很多人还是...
  • nostopstep
  • nostopstep
  • 2015年08月25日 18:34
  • 8619

Protobuf 的安装使用总结

ProtoBuf的官方下载包并不包含jar文件,需要用户自己来自行编译。 下载  protobuf-2.5.0.tar.gz (ProtoBuf的源文件(包含了C++/Java/Python)的源文...
  • jiangguilong2000
  • jiangguilong2000
  • 2013年07月09日 18:34
  • 32014

google protobuf学习笔记一:windows下环境配置

protobuf的使用和原理,请查看:http://blog.csdn.net/majianfei1023/article/details/45112415 Windows下google protob...
  • majianfei1023
  • majianfei1023
  • 2015年04月29日 22:14
  • 31841

protoc for android (windows、mac)(lite)

  • 2016年12月27日 19:20
  • 3.88MB
  • 下载

protoc编译proto文件之Java源码结构分析二(person.proto)

一、person.protooption java_package = "com.test.protocol"; option java_outer_classname = "PersonProto"...
  • tterminator
  • tterminator
  • 2016年07月30日 15:47
  • 619

NDK移植编译&心得&ADB简单应用

I. 基本流程1.设置环境变量建议去官网下载最新版本的NDK,老版本很多宏定义缺失,比较麻烦。同时,之前用android-ndk-r10d,需要安装32位库环境。yum install libstdc...
  • gogoytgo
  • gogoytgo
  • 2017年06月02日 17:33
  • 371

protoc编译proto文件之Java源码结构分析一(addr.proto)

一、addr.protooption java_package = "com.test.protocol"; option java_outer_classname = "AddressProto";...
  • tterminator
  • tterminator
  • 2016年07月30日 12:38
  • 1300

protoc-gen-lua 编译、安装、使用教程

原文地址:http://blog.csdn.net/huutu/article/details/49672225 Protobuf 官方并没有 Lua版本,然后网易的程序猿开发出了 prot...
  • oSKyTonight
  • oSKyTonight
  • 2016年09月18日 18:46
  • 410

protoc-gen-lua 编译、安装、使用教程

版权声明:本文转自http://blog.csdn.net/huutu 转载请带上 http://www.liveslives.com/ Protobuf 官方并没有 Lua版本,然后网易的程序...
  • Momo_Da
  • Momo_Da
  • 2017年11月27日 11:28
  • 50

mac os x 下的 编译 protoc-gen-lua 的pb.so

最近在做一个需求,由于服务器还未提供完整的pb,需要客户端自己构建pb,遇到了若干问题,下班回家想研究lua版本的protocol buffer.就下载了一个,在自己的mac上构建,结果编译的时候遇到...
  • PenguinProgramer
  • PenguinProgramer
  • 2016年11月17日 06:20
  • 1479
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:NDK 编译protoc buf lite心得
举报原因:
原因补充:

(最多只允许输入30个字)