从官网下载protobuf-2.6.0.tar.gz.
第一步是编译出x86版的库和protoc,
按顺序执行下列命令
tar -zxvf protobuf-2.6.0.tar.gz
cd protobuf-2.6.0
./configure
make
make check
sudo make install
注意make install这一步,如果没有系统root权限也是可以操作的,需要将protobuf安装到指定目录:
make install DESTDIR=/home/yourdir/
具体可以参考下面的blog:
http://blog.csdn.net/liyuan123zhouhui/article/details/72781443
由于是在当前用户下安装,因此需要在当前用户环境下能够找到bin和lib 的目录,需要一下操作
在当前~目录下找到 .bashrc文件,打开这下面添加一下两行:
export LD_LIBRARY_PATH="/home/yourdir/pc_protoc/usr/local/lib"
export PATH="$PATH:$HOME/yourdir/usr/local/bin"
然后执行source .bashrc
这样上面添加的两行环境变量就会生效
这时已经编译出一个linux版的protobuf库和protoc, 这时需要开始来编arm版,因为下一步需要可以在linux上运行的protoc,所以上面的步骤不能少。
下面开始编译arm版
删除中间文件
make clean
生成makefile
./configure --host=arm-linux CC=arm-linux-gnueabi-gcc CXX=arm-linux-gnueabi-g++ --with-protoc=/usr/bin/protoc
关于./configure 的参数可以直接使用命令来查看:
./configure -help
进行编译生成文件
make
如果没有出错,那么arm版的库就编译出来了, 他们的位置是
protobuf-2.6.0/src/.libs/
使用readelf -h libprotobuf.so来查看文件信息,如果对应machin值是ARM,那么就是大功告成了。
最后在使用生成的protoc文件编译proto后缀文件,生成相应的头文件和源文件:
protoc --proto_path=src --cpp_out=include/caffe/proto caffe.proto
proto_path指proto文件所在目录,cpp_out指源文件的输出目录
最后的caffe.proto指需要编译的proto文件
参考文章:
https://github.com/eurotech/edc-examples/wiki/Cross-compiling-protobuf-for-ARM-architecture