目录
1、下载对应protobuf版本包
源码连接:protobuf-master-3.19.4.zip-C++文档类资源-CSDN下载
2、编译Linux版本
以protobuf-all-3.12.3.zip版本为例
解压版本包
tar -zxvf protobuf-all-3.12.3.zip
cd protobuf-3.12.3
./autogen.sh
若出现以上问题,是因为没有安装autoreconf导致,执行以下命令即可
apt-get install autoconf automake libtool
./configure [默认路径为/usr/local/路径下对应的include、lib、bin]
make -j32 [多线程编译]
make install [默认安装后的路径在usr/local下]
sudo ldconfig
安装完成后显示如下:
3、编译Arm版本
安装protobuf arm版本需要先安装linux版本,用到其中的生成文件
生成Makefile文件
./configure --host=arm-linux --prefix=/usr/local/protobuf --with-protoc=/usr/local/bin/protoc CC=/home/bin/clang CXX=/home/bin/clang++
--host编译的版本为arm-linux
--prefix为生成文件的路径
--with-protoc为linux版protoc的路径,即之前安装的linux版本生成的目录中的工具
CC指定编译c的工具链为arm-none-linux-gnueabi-gcc
CXX指定编译c的工具链为arm-none-linux-gnueabi-g++
【注:交叉编译工具链可按自己需求替换即可,我这里指定的是clang、clang++】
这一步主要目的是用来生成Makefile文件
编译安装【同linux】
编译:make
安装 : make install
4、若指定安装在其他路径下,可通过如下操作进行配置
1> sudo vim /etc/profile
添加
export PATH=$PATH:/usr/local/protobuf/bin/
export PKG_CONFIG_PATH=/usr/local/protobuf/lib/pkgconfig/
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/protobuf_arm/lib
export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/protobuf_arm/lib
保存执行
source /etc/profile
同时 在~/.profile中添加上面两行代码,否则会出现登录用户找不到protoc命令
2> 修改.bashrc文件
# vi /root/.bashrc
在里面加入:
export PATH=$PATH:/usr/local/protobuf/bin/
export PKG_CONFIG_PATH=/usr/local/protobuf/lib/pkgconfig/
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/protobuf_arm/lib
export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/protobuf_arm/lib
3> 配置动态链接库路径
sudo vim /etc/ld.so.conf
插入:
/usr/local/protobuf/lib
5、Demo实例
代码如下
cd build
cmake ../
make
编译结果如下