当前位置: 代码迷 >> 综合 >> protobuf,protobuf-c的安装和交叉编译
  详细解决方案

protobuf,protobuf-c的安装和交叉编译

热度:99   发布时间:2023-12-05 15:28:20.0

一 、 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

  相关解决方案