linxu NDK編譯protobuf方法2 各種NDK版本的編譯方法

NDKr16b編譯protobuf 3.5.1 方法

獨立工具鏈編譯方法,請看 https://blog.csdn.net/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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章