美文网首页
Android平台protobuffer静态链接库的编译

Android平台protobuffer静态链接库的编译

作者: orgcheng | 来源:发表于2020-06-08 14:42 被阅读0次

准备工作

  • 编译环境选择macOS High Sierra 10.13.6

  • NDK版本21.0.6113669

  • 安装相关的工具:autoconf automake libtool make g++ unzip cmake

    autoconf和automake安装类似,我是手动下载到本地,解压后再配置安装的

    curl -O http://mirrors.kernel.org/gnu/autoconf/autoconf-2.69.tar.gz
    tar -xzvf autoconf-2.65.tar.gz
    cd autoconf-2.65
    ./configure --prefix=/usr/local # ironic, isn't it?
    make
    sudo make install
    
    // automake操作步骤相似
    

    cmake直接下载dmg,手动安装的

    其他的工具,需要自己查看是否安装,没有了再去自己安装

  • 下载对应的版本 我下载protobuf-cpp-3.12.3.tar.gz,针对c++平台的

配置和编译

下面利用cmake连配置和编译安装

具体过程参考,但是有些选项参数,还需要参考这篇博客

当前目录,是protobuf-3.12.3/cmake/build/release,执行完后,生成文件在protobuf-3.12.3同级别的install目录下面

// NDK_HOME目录是必须的,否则提示找不到
export NDK_HOME=/Users/chengzhen/Library/Android/sdk/ndk/21.0.6113669
export ANDROID_NDK_HOME=/Users/chengzhen/Library/Android/sdk/ndk/21.0.6113669
export ANDROID_NDK_ROOT=/Users/chengzhen/Library/Android/sdk/ndk/21.0.6113669
PATH=$ANDROID_NDK_ROOT/toolchains/llvm/prebuilt/darwin-x86_64/bin:$ANDROID_NDK_ROOT/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64/bin:$ANDROID_NDK_ROOT/toolchains/aarch64-linux-androideabi-4.9/prebuilt/darwin-x86_64/bin:$PATH

cmake -G "Unix Makefiles" \
-Dprotobuf_BUILD_SHARED_LIBS=OFF \
-Dprotobuf_BUILD_SHARED_LIBS=OFF \
-Dprotobuf_BUILD_STATIC_LIBS=ON \
-Dprotobuf_BUILD_EXAMPLES=OFF \
-DCMAKE_TOOLCHAIN_FILE=$NDK_HOME/build/cmake/android.toolchain.cmake \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=../../../../install \
-DANDROID_NDK=$NDK_HOME \
-DANDROID_ABI=armeabi-v7a \
-DANDROID_NATIVE_API_LEVEL=21 \
-DANDROID_STL=c++_shared \
../..

cmake --build .
make install

另外,还需要修改protobuf-3.12.3/cmake目录下的CMakeLists.txt和install.cmake文件

主要是屏蔽掉protoc.cmake、libprotobuf.cmake和libprotoc.camke相关的编译,具体修改可参考博客https://my.oschina.net/zzxzzg/blog/1621684

相关文章

网友评论

      本文标题:Android平台protobuffer静态链接库的编译

      本文链接:https://www.haomeiwen.com/subject/utlgzhtx.html