Google protobuf和Android NDK [英] Google protobuf and Android NDK

查看:216
本文介绍了Google protobuf和Android NDK的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何构建Google protobuf(c ++版本, https://github.com/google/protobuf/releases/latest )与Android目标?

How to build Google protobuf (c++ version, https://github.com/google/protobuf/releases/latest ) with Android target?

推荐答案

我在没有ndk-build的情况下编译了protobuf.这是脚本(不是很干净,但是可以用):

I compiled protobuf without ndk-build. Here's the script (not very clean but it works):

rm -rf /tmp/protobuf-3.3.0/
tar xzvf ~/Downloads/protobuf-cpp-3.3.0.tar.gz -C /tmp/
cd /tmp/protobuf-3.3.0/
export NDK_ROOT=/home/user/SDKS/ANDROID/NDK/android-ndk-r13b
export SYSROOT=$NDK_ROOT/platforms/android-9/arch-arm
export PREBUILT=$NDK_ROOT/toolchains/arm-linux-androideabi-4.9
export LDFLAGS="--sysroot=$SYSROOT"
export LD="$NDK_ROOT/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/arm-linux-androideabi/bin/ld $LDFLAGS"
export LIBS="-llog $NDK_ROOT/sources/cxx-stl/gnu-libstdc++/4.9/libs/armeabi-v7a/libgnustl_static.a"
export CPPFLAGS=""
export INCLUDES="-I$NDK_ROOT/sources/cxx-stl/gnu-libstdc++/4.9/include/ -I$NDK_ROOT/platforms/android-9/arch-arm/usr/include/ -I$NDK_ROOT/sources/cxx-stl/gnu-libstdc++/4.9/libs/armeabi-v7a/include/"
export CXXFLAGS="-march=armv7-a -mfloat-abi=softfp -DGOOGLE_PROTOBUF_NO_RTTI --sysroot=$SYSROOT"
export CCFLAGS="$CXXFLAGS"
export CXX="$PREBUILT/prebuilt/linux-x86_64/bin/arm-linux-androideabi-g++ $CXXFLAGS"
export CC="$CXX"
./autogen.sh
./configure --host=arm-linux-androideabi --with-sysroot=$SYSROOT --enable-cross-compile --with-protoc=protoc --disable-static --enable-shared CXX="$CXX" CC="$CC" LD="$LD"
make
cp -v /tmp/protobuf-3.3.0/src/.libs/* ~/git/project/build/protobuf_android/

这篇关于Google protobuf和Android NDK的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆