linxu NDK编译protobuf方法2 各种NDK版本的编译方法

本文详细介绍了使用NDKr16b编译Protobuf3.5.1及更高版本的方法,包括通过CMake进行交叉编译的过程,以及编译Linux版本Protobuf作为前置条件的步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

NDKr16b编译protobuf 3.5.1 方法

独立工具链编译方法,请看 https://blog.youkuaiyun.com/qq_28386947/article/details/105745620
上次我们说到ndkr16b编译protobuf3.5.1以上版本会报以下错:

undefined reference to 'scc_info_FileDescriptorProto_google_2fprotobuf_2fdescriptor_2eproto

那如何解决呢。这次我们用cmake的方法交叉编译protbuf3.8.0或任何版本。

目前NDK的最高版本不支持独立工具链,但都会支持cmake编译,以下是编译方法。

1、NDK编译protobuf 3.8.0

编译Android版protobuf前,先确保已经编译安装好linux版protobuf

cd ~/Android
 
git clone https://github.com/protocolbuffers/protobuf.git
 
cd protobuf
 
git checkout v3.8.0

cd cmake


 

输入以下参数:


cmake -DCMAKE_TOOLCHAIN_FILE=/home/aicrobo/Documents/android-ndk-r16b/build/cmake/android.toolchain.cmake -DANDROID_ABI=armeabi-v7a \
-DANDROID_NATIVE_API_LEVEL=21 \
-DCMAKE_BUILD_TYPE=Release\
-DANDROID_TOOLCHAIN=clang -Dprotobuf_BUILD_TESTS=OFF \
-Dprotobuf_BUILD_SHARED_LIBS=ON

编译生成.so文件在protobuf cmake中。

说一下ndk的重要参数吧:

DANDROID_NATIVE_API_LEVEL  是你ndk API 的多

Dprotobuf_BUILD_SHARED_LIBS ON表示动态库  生成.so文件。

2、编译linux版本protobuf  必须!!在使用ndk之前 ,必须有linux版本的protobuf

//创建protobuf的目录
//git clone protobuf

  mkdir $HOME/Android/NDK/google
  
  cd $HOME/Android/NDK/google
 
  git clone https://github.com/protocolbuffers/protobuf.git
 
  cd protobuf
 
  git submodule update --init --recursive
 
#检查你的proto版本号 别看错了

 git checkout -b v3.5.2 v3.5.2
 
 
构建  (x86) 版本protobuf 库和构建器(protoc)
sudo apt-get install curl autoconf libtool build-essential g++
 
#在proto根目录
./autogen.sh
 
 mkdir x86_build
 cd x86_build
 
 
 ../configure --prefix=$HOME/Android/NDK/google/x86_pb_install
 
 make install –j8
 
 cd ..
 
库文件在: $HOME/Android/NDK/google/x86_pb_install/lib
protoc 文件在: $HOME/Android/NDK/google/x86_pb_install/bin
包含的头文件在: $HOME/Android/NDK/google/x86_pb_install/include

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值