Google protobuf 和 Android NDK

问题描述 投票:0回答:2

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

c++ android-ndk protocol-buffers
2个回答
2
投票

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

    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/

0
投票

这可能有点矫枉过正,因为我在另一个项目中使用它,所以依赖关系过多,但是......

protobuf aarch64/arm Android.mk

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.