网上查了很多资料,自己也尝试过多次,经过屡次失败之后终于成功了,记录下此文档和大家分享下。
先说下我的环境:
win7(64bit) + cygwin(64bit) + ndk(r9b) + protobuf(2.5.0)应该都是目前最新的环境。
1.搭建好ndk的环境,保证能成功编译ndk下的例子hello-jni。
2.在protobuf目录下新建jni目录,将src目录复制到jni目录下;
3.在jni目录下新建Android.mk文件,将下面的内容粘贴到文件中:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := protobuf_static
LOCAL_MODULE_FILENAME := libprotobuf
LOCAL_SRC_FILES :=src/google/protobuf/io/coded_stream.cc \
src/google/protobuf/stubs/common.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.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/io/gzip_stream.cc \
src/google/protobuf/compiler/importer.cc \
src/google/protobuf/message.cc \
src/google/protobuf/message_lite.cc \
src/google/protobuf/stubs/once.cc \
src/google/protobuf/compiler/parser.cc \
src/google/protobuf/io/printer.cc \
src/google/protobuf/reflection_ops.cc \
src/google/protobuf/repeated_field.cc \
src/google/protobuf/service.cc \
src/google/protobuf/stubs/structurally_valid.cc \
src/google/protobuf/stubs/strutil.cc \
src/google/protobuf/stubs/substitute.cc \
src/google/protobuf/text_format.cc \
src/google/protobuf/io/tokenizer.cc \
src/google/protobuf/unknown_field_set.cc \
src/google/protobuf/wire_format.cc \
src/google/protobuf/wire_format_lite.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/stringprintf.cc
LOCAL_EXPORT_C_INCLUDES :=
LOCAL_EXPORT_LDLIBS :=
LOCAL_C_INCLUDES := $(LOCAL_PATH) \
$(LOCAL_PATH)/src
LOCAL_LDLIBS := \
-llog \
-lz
include $(BUILD_STATIC_LIBRARY)
4.在jni目录下新建Application.mk文件,将下面的内容粘贴到此文件中:
APP_STL := gnustl_static
APP_CPPFLAGS := -frtti
5.打开cygwin,转到protobuf目录,允许命令
./configure
6.将protobuf目录下的config.h文件复制到jni/src目录下
7.在protobuf目录下执行ndk-build命令,此时开始编译protobuf
如果一切顺利,会提示生成了libprotobuf.a文件。
此文件保存在protobuf目录下的obj/local/armeabi位置
分享到:
相关推荐
Android NDK 交叉编译工具 Android NDK 交叉编译工具
Cygwin+NDK配置最新最全,Cygwin配置,NDK配置
windows下eclipse集成cygwin编译android_NDK.doc
详细介绍android ndk编译环境搭建,可以自行编译android app所需的C++/C代码实现的高效率功能动态库文件,借JAVA层调用.
cygwin下的arm交叉编译工具链,cygwin下的arm交叉编译工具链
cygwin可以编译生成windows下供调用的dllcygwin可以编译生成windows下供调用的dllcygwin可以编译生成windows下供调用的dll
这是我在win7下用cygwin编译的linphone源码,写的很详细,适合菜鸟看,高手也许用不着
VLC在cygwin中的编译方法和错误解析.doc
后来结合网上说的让后加上自己摸索,终于可以用eclipse + NDK + Cygwin编译出so文件并且能够直接运行helloJNI程序了,现在把我的经验和大家分享,希望对大家有帮助。(想起来了,我的Cygwin是下载到本地然后安装的,...
使用NDK,在Android开发总调用c++等语言 使用cygwin模拟unix环境以生成so文件
使用cygwin+NDK可直接编译通过 相关cygwin命令,文件夹放在c盘上 cd /cygdrive/c/jrtp export NDK_MODULE_PATH=/cygdrive/c/jrtp /cygdrive/c/android-ndk-r7/ndk-build NDK_PROJECT_PATH=$NDK_MODULE_PATH
memcached-1.4.24-windows-x64.zip windows memcached服务端 cygwin64gcc编译
cygwin ,仅含android ndk所需要的功能,autoconf2.1、automake1.10、binutils、gcc-core、gcc- g++、gcc4-core、gcc4-g++、gdb、pcre、pcre-devel、gawk、make共12个包。 安装了直接可以用
ffmpeg ndk编译目录结构以及Android.mk, 使用MingW与Cygwin编译均可,需要根据config.sh设置NDK的安装目录
主要可以实现在windows系统下开发并编译Linux代码
cygwin可以模拟Linux环境,在android开发是进行开发NDK时候,是不可缺少的工具之一。在cygwin中执行ndk编译命令,可以讲.c文件转换成.so文件,通过jni技术调用。
仔细讲述了cygwin安装的过程 android 源码下载的步骤 以及ndk编辑的过程,此文档是目前截止今天最完整的
cygwin+ndk编译openssl源码库 for Android
试过很多NDK和ffmeg版本,编译均不成功,最终在android-ndk-r10和ffmpeg-2.1.4下编译成功。 上传内容包括ffmpeg-2.1.4,配置文件config.sh,及编译成功后生成的libffmpeg.so文件