使用NDK编译Google Protocol Buffer
2015-08-31 18:26
453 查看
NDK编译c++代码的流程请参考别处。只要配置好了NDK的环境,那个jni文件夹是否建立在Android studio或者eclipse等开发工具建立的工程中不是必要的。关键是源代码要放在这个名称的文件夹下,以及两个文件的内容:Application.mk和Android.mk
然后,没有了............
Application.mk
APP_STL := gnustl_static APP_ABI := x86 APP_PROJECT_PATH := ./ APP_BUILD_SCRIPT := ./Android.mk如果APP_STL不设置为gnustl_static,会提示找不到标准库的引用。我需要在x86的模拟器下使用,所以APP_ABI设置为x86
Android.mk
这个比较长啊,我下载protobuffer版本是2.6.1,而且是x86架构,比这里copy的内容有所删减:LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) CC_LITE_SRC_FILES := \ src/google/protobuf/stubs/common.cc \ src/google/protobuf/stubs/once.cc \ src/google/protobuf/stubs/stringprintf.cc \ #编译错误追加的 src/google/protobuf/stubs/atomicops_internals_x86_gcc.cc \ #这个也是编译错误后追加 src/google/protobuf/extension_set.cc \ src/google/protobuf/generated_message_util.cc \ src/google/protobuf/message_lite.cc \ src/google/protobuf/repeated_field.cc \ src/google/protobuf/wire_format_lite.cc \ src/google/protobuf/io/coded_stream.cc \ src/google/protobuf/io/zero_copy_stream.cc \ src/google/protobuf/io/zero_copy_stream_impl_lite.cc \ src/google/protobuf/io/strtod.cc COMPILER_SRC_FILES := \ src/google/protobuf/descriptor.cc \ src/google/protobuf/descriptor.pb.cc \ src/google/protobuf/descriptor_database.cc \ src/google/protobuf/dynamic_message.cc \ src/google/protobuf/extension_set.cc \ src/google/protobuf/extension_set_heavy.cc \ src/google/protobuf/generated_message_reflection.cc \ src/google/protobuf/generated_message_util.cc \ src/google/protobuf/message.cc \ src/google/protobuf/message_lite.cc \ src/google/protobuf/reflection_ops.cc \ src/google/protobuf/repeated_field.cc \ src/google/protobuf/service.cc \ src/google/protobuf/text_format.cc \ src/google/protobuf/unknown_field_set.cc \ src/google/protobuf/wire_format.cc \ src/google/protobuf/wire_format_lite.cc \ src/google/protobuf/compiler/code_generator.cc \ src/google/protobuf/compiler/command_line_interface.cc \ src/google/protobuf/compiler/importer.cc \ src/google/protobuf/compiler/main.cc \ src/google/protobuf/compiler/parser.cc \ src/google/protobuf/compiler/plugin.cc \ src/google/protobuf/compiler/plugin.pb.cc \ src/google/protobuf/compiler/subprocess.cc \ src/google/protobuf/compiler/zip_writer.cc \ src/google/protobuf/compiler/cpp/cpp_enum.cc \ src/google/protobuf/compiler/cpp/cpp_enum_field.cc \ src/google/protobuf/compiler/cpp/cpp_extension.cc \ src/google/protobuf/compiler/cpp/cpp_field.cc \ src/google/protobuf/compiler/cpp/cpp_file.cc \ src/google/protobuf/compiler/cpp/cpp_generator.cc \ src/google/protobuf/compiler/cpp/cpp_helpers.cc \ src/google/protobuf/compiler/cpp/cpp_message.cc \ src/google/protobuf/compiler/cpp/cpp_message_field.cc \ src/google/protobuf/compiler/cpp/cpp_primitive_field.cc \ src/google/protobuf/compiler/cpp/cpp_service.cc \ src/google/protobuf/compiler/cpp/cpp_string_field.cc \ src/google/protobuf/compiler/java/java_enum.cc \ src/google/protobuf/compiler/java/java_enum_field.cc \ src/google/protobuf/compiler/java/java_extension.cc \ src/google/protobuf/compiler/java/java_field.cc \ src/google/protobuf/compiler/java/java_file.cc \ src/google/protobuf/compiler/java/java_generator.cc \ src/google/protobuf/compiler/java/java_helpers.cc \ src/google/protobuf/compiler/java/java_message.cc \ src/google/protobuf/compiler/java/java_message_field.cc \ src/google/protobuf/compiler/java/java_primitive_field.cc \ src/google/protobuf/compiler/java/java_service.cc \ src/google/protobuf/compiler/javamicro/javamicro_enum.cc \ src/google/protobuf/compiler/javamicro/javamicro_enum_field.cc \ src/google/protobuf/compiler/javamicro/javamicro_field.cc \ src/google/protobuf/compiler/javamicro/javamicro_file.cc \ src/google/protobuf/compiler/javamicro/javamicro_generator.cc \ src/google/protobuf/compiler/javamicro/javamicro_helpers.cc \ src/google/protobuf/compiler/javamicro/javamicro_message.cc \ src/google/protobuf/compiler/javamicro/javamicro_message_field.cc \ src/google/protobuf/compiler/javamicro/javamicro_primitive_field.cc \ src/google/protobuf/compiler/python/python_generator.cc \ src/google/protobuf/io/coded_stream.cc \ src/google/protobuf/io/gzip_stream.cc \ src/google/protobuf/io/printer.cc \ src/google/protobuf/io/tokenizer.cc \ src/google/protobuf/io/zero_copy_stream.cc \ src/google/protobuf/io/zero_copy_stream_impl.cc \ src/google/protobuf/io/zero_copy_stream_impl_lite.cc \ src/google/protobuf/stubs/common.cc \ src/google/protobuf/stubs/hash.cc \ src/google/protobuf/stubs/once.cc \ src/google/protobuf/stubs/structurally_valid.cc \ src/google/protobuf/stubs/strutil.cc \ src/google/protobuf/stubs/substitute.cc # C++ full library # ======================================================= #include $(CLEAR_VARS) LOCAL_MODULE := libprotobuf LOCAL_MODULE_TAGS := optional LOCAL_CPP_EXTENSION := .cc LOCAL_SRC_FILES := \ $(CC_LITE_SRC_FILES) \ src/google/protobuf/stubs/strutil.cc \ src/google/protobuf/stubs/substitute.cc \ src/google/protobuf/stubs/structurally_valid.cc \ src/google/protobuf/descriptor.cc \ src/google/protobuf/descriptor.pb.cc \ src/google/protobuf/descriptor_database.cc \ src/google/protobuf/dynamic_message.cc \ src/google/protobuf/extension_set_heavy.cc \ src/google/protobuf/generated_message_reflection.cc \ src/google/protobuf/message.cc \ src/google/protobuf/reflection_ops.cc \ src/google/protobuf/service.cc \ src/google/protobuf/text_format.cc \ src/google/protobuf/unknown_field_set.cc \ src/google/protobuf/wire_format.cc \ src/google/protobuf/io/gzip_stream.cc \ src/google/protobuf/io/printer.cc \ src/google/protobuf/io/tokenizer.cc \ src/google/protobuf/io/zero_copy_stream_impl.cc \ src/google/protobuf/compiler/importer.cc \ src/google/protobuf/compiler/parser.cc LOCAL_C_INCLUDES := \ $(LOCAL_PATH)/src LOCAL_C_INCLUDES := \ $(LOCAL_PATH)/android \ bionic \ $(LOCAL_PATH)/src \ $(JNI_H_INCLUDE) LOCAL_SHARED_LIBRARIES := \ libz libcutils libutils LOCAL_LDLIBS := -lz # stlport conflicts with the host stl library ifneq ($(TARGET_SIMULATOR),true) LOCAL_C_INCLUDES += external/stlport/stlport LOCAL_SHARED_LIBRARIES += libstlport endif # Define the header files to be copied #LOCAL_COPY_HEADERS := \ # src/google/protobuf/stubs/once.h \ # src/google/protobuf/stubs/common.h \ # src/google/protobuf/io/coded_stream.h \ # src/google/protobuf/generated_message_util.h \ # src/google/protobuf/repeated_field.h \ # src/google/protobuf/extension_set.h \ # src/google/protobuf/wire_format_lite_inl.h # #LOCAL_COPY_HEADERS_TO := $(LOCAL_MODULE) LOCAL_CFLAGS := -DGOOGLE_PROTOBUF_NO_RTTI include $(BUILD_SHARED_LIBRARY)
然后,没有了............
相关文章推荐
- fedora22 下安装在线音乐播放器 kwplayer
- HTML+CSS大风车及十字架的实现
- hadoop集群配置datanode无法启动的原因
- 详解CSS中的Box Model盒属性的使用
- 自定义radio标签
- css ie6,ie7,ie8 兼容性写法,CSS hack写法
- JSTL标签学习
- An Efficient Resource Allocation Scheme for Cross- Cloud Federation
- ExtJS 3 不能在IE9下正常运行的简单解决办法
- Git的使用十五(Feature分支)仅限Mac亲测
- js 文本框禁止粘贴复制功能
- js延迟加载的几种方法
- 使用Redux管理你的React应用
- phpQuery—基于jQuery的PHP实现
- 简易前端分页组件
- 经常使用的两个清爽的table样式
- 闹钟倒计时动画效果实现。仿聚美优品H5闪购动画。
- MVC中bootstrap循环绑定数据源
- JSON简单用法
- Web前端知识技能大汇总