一 、 protobuf 安装
下载链接
1. 确认安装依赖库:automake ,autoconf ,libtool
2. 下载 protobuf 安装文件,protobuf-cpp-3.5.0.tar.gz ,
解压,
./configure
make
make check
sudo make install
【默认安装路径:/usr/local/】
3. 安装完添加环境变量, vi /etc/profile 末尾添加
PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH
5. sudo ldconfig
(ps:如果失败则在/etc/ld.so.conf 文件中加入 /usr/local/lib
,然后执行sudo ldconfig
)
二、protobuf-c的安装
下载链接
1.确认安装依赖: protobuf
2. 需在github上下载protobuf-c protobuf-c-master.zip
解压
./autogen.sh
./configure
make
sudo make install
【默认安装路径:/usr/local/】
PS:
如果在编译过程中出现错误如下:(可能是make时出现)
解决方法:
三、protobuf-c 的交叉编译
1、可以用上一步的protobuf-c-master文件,执行一下make clean
; 或者重新解压一下protobuf-c-master安装包
3、./autogen.sh
4、./configure --host=arm-linux CC=PATH/arm-none-linux-gnueabi-gcc CXX=PATH/arm-none-linux-gnueabi-g++ --disable-protoc --prefix=/usr/local/protobuf-c-arm
CC=指定gcc编译器(gcc的绝对路径,如:XX/xx/arm-oe-linux-gnueabi-gcc),CXX=指定g++编译器(同gcc,绝对路径),--disable-protoc 不使用protoc(因为它是C++版本,此处只用它生成两个文件,编译处用不到,除非在arm机器上编译protoc代码才会用到),--prefix=指定安装路径
5、make
6、等待完成,最终会在protobuf-c-master /protobuf-c/.libs目录下生成.so动态库
PS1:
在执行第四步时可能出现错误,如下图所示:
说明:其中error 1 和error 2 不是造成错误返回的原因,error3才是,错误原因是编译器启动虚拟浮点数导致。
解决办法:在执行第4步时修改配置参数如下所示:
./configure --host=arm-linux CC="**PATH**/arm-none-linux-gnueabi-gcc -mfloat-abi=hard" CXX=**PATH**/arm-none-linux-gnueabi-g++ --disable-protoc --prefix=/usr/local/protobuf-c-arm
(CC参数中指定为硬件浮点数 -mfloat-abi=hard)
PS2:
如果第4步不加-disable-protoc
参数会出现如下错误:
四、程序编译
[root@localhost test]# arm-none-linux-gnueabi-gcc test.pb-c.c test.c -o main -I/头文件路径 -L/库路径 -lprotobuf-c
参考链接:https://blog.csdn.net/Thinkerlife/article/details/80704172