Protobuf C++ ARM 版编译安装
前言
Protobuf C++ ARM 版依赖于linux版本,需要使用交叉编译环境进行编译,这里使用的是 arm-none-linux-gnueabi-c++
arm-none-linux-gnueabi-c++下载地址
安装交叉编译环境
- 下载arm-none-linux-gnueabi-c++
- 将其移动到linux目录下
- 解压
tar -jxvf arm-2014.05-29-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2
- 修改环境变量
vim /etc/profile
添加解压后文件所在路径(… 代表路径,替换为自己的)
export PATH=$PATH:.../arm/bin
- 保存执行
source /etc/profile
验证
arm-none-linux-gnueabi-c++ -v
如果返回如下图所示,则成功
可能存在问题
arm-none-linux-gnueabi-c++ -v
提示找不到路径之类的错误,可能是有与32位和64位造成
需要安装兼容库
sudo apt-get install lib32z1 lib32ncurses5 lib32bz2-1.0
安装protobuf linux版本
安装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
欢迎关注我的公众号,持续分析优质技术文章