Protobuf C++ ARM 版編譯安裝

Protobuf C++ ARM 版編譯安裝

前言

Protobuf C++ ARM 版依賴於linux版本,需要使用交叉編譯環境進行編譯,這裏使用的是 arm-none-linux-gnueabi-c++

arm-none-linux-gnueabi-c++下載地址

安裝交叉編譯環境

  1. 下載arm-none-linux-gnueabi-c++
  2. 將其移動到linux目錄下
  3. 解壓
tar -jxvf arm-2014.05-29-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2
  1. 修改環境變量
 vim /etc/profile

添加解壓後文件所在路徑(… 代表路徑,替換爲自己的)

export PATH=$PATH:.../arm/bin
  1. 保存執行
source /etc/profile

驗證

arm-none-linux-gnueabi-c++ -v

如果返回如下圖所示,則成功
-v 結果

可能存在問題

arm-none-linux-gnueabi-c++ -v

提示找不到路徑之類的錯誤,可能是有與32位和64位造成
需要安裝兼容庫

sudo apt-get install lib32z1 lib32ncurses5 lib32bz2-1.0

安裝protobuf linux版本

參考Protobuf C++ 版編譯安裝和簡單使用

安裝protobuf arm版本

安裝protobuf arm版本需要先安裝linux版本,用到其中的生成文件

生成Makefile文件

./configure --host=arm-linux --prefix=/usr/local/protobuf_arm --with-protoc=/usr/local/protobuf/bin/protoc CC=arm-none-linux-gnueabi-gcc CXX=arm-none-linux-gnueabi-g++
  • --host編譯的版本爲arm-linux
  • --prefix爲生成文件的路徑
  • --with-protoc爲linux版protoc的路徑,即之前安裝的linux版本生成的目錄中的工具
  • CC指定編譯c的工具鏈爲arm-none-linux-gnueabi-gcc
  • CXX指定編譯c的工具鏈爲arm-none-linux-gnueabi-g++

這一步主要目的是用來生成Makefile文件

編譯安裝

編譯:make
測試: make check
安裝 : make install

設置環境變量

添加如下環境變量

 vim /etc/profile
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/protobuf_arm/lib
export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/protobuf_arm/lib
export PATH=$PATH:/usr/local/protobuf_arm/bin

保存執行

source /etc/profile

編譯Demo

arm-none-linux-gnueabi-c++ -std=c++11 Test.pb.cc test.cpp -o test `pkg-config --cflags --libs protobuf-lite`

上述鏈接的protobuf-lite庫,有些高級用法進行了刪減,主要是減小鏈接庫煩人體積,對應的.proto文件添加option optimize_for = LITE_RUNTIME;

也可以採用protobuf庫,包含完整用法,不需要加option optimize_for選項

使用生成的文件

在liunx已無法直接運行,需要移動到ARM端執行

在執行前需要先將依賴的庫推入ARM設備

adb shell mount -o rw,remount /
adb push protobuf-lite.so.20 /usr/lib/protobuf-lite.so.20

我這裏根據錯誤提示推入的是protobuf-lite.so.20

然後即可執行

./tets

歡迎關注我的公衆號,持續分析優質技術文章
歡迎關注我的公衆號

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