protobuf/android 交叉編譯筆記


protobuf 交叉編譯筆記

目標是使用 android ndk 的工具鏈編譯出 android armeabi-v7a 可用的 protobuf 庫。

交叉編譯環境配置

windows 平台

  1. 下載 NDK x86_64 或者 NDK x86 並解壓縮
  2. 下載 protobuf 源代碼。這里以 protobuf 3.4.1 舉例。
  3. 下載並安裝最新的 cmake 3.10 x86_64 或者 cmake 3.10 x86

以上,准備完成。

使用 cmake 生成 makefile

選擇一個你喜歡的位置,打開cmd,執行下述命令。

mkdir build
cd build
cmake -G "MinGW Makefiles" \
	-DCMAKE_TOOLCHAIN_FILE=<Your NDK PATH>/build/cmake/android.toolchain.cmake \
    -DCMAKE_MAKE_PROGRAM=<Your NDK PATH>/prebuilt/windows-x86_64/bin/make.exe \
    -Dprotobuf_BUILD_TESTS=OFF \
    <Protobuf source PATH>/cmake

幾個關鍵參數略作解釋。

CMAKE_TOOLCHAIN_FILE,這個變量指定了 cmake 使用的 toolchain 腳本,toolchain腳本會幫助配置交叉編譯使用的頭文件/庫文件路徑,配置編譯器/鏈接器等一系列工具。

CMAKE_MAKE_PROGRAM,這個變量指定了cmake使用的make程序,如果系統的PATH中沒有 make.exe 的話(通常也不會有,除非安裝了 MinGW 並且配置了 PATH 環境變量),就需要指定使用的 make.exe 程序。這里使用了 ndk 自帶的 prebuilt 版 make.exe

protobuf_BUILD_TESTS,不要編譯測試用例,這一選項默認啟用,但在交叉編譯時會導致奇怪的問題。

-G "MinGW Makefiles",指定 cmake 生成 MinGW Makefile,即一般所說的 Makefile

編譯

cmake --build . --target libprotobuf
cmake --build . --target libprotobuf-lite

分別編譯libprotobuflibprotobuf-lite兩個庫,這兩個庫就是我們將會用到的 protobuf 靜態庫了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM