Android平台protobuffer静态链接库的编译
2020-06-08 本文已影响0人
orgcheng
准备工作
-
编译环境选择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