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

本文详细介绍了protobuf和protobuf-c的安装步骤,包括确认依赖库、下载安装文件、配置与编译,并提供了遇到问题时的解决方法,特别是针对protobuf-c的交叉编译过程中的错误处理,强调了在特定编译阶段需要指定硬件浮点数参数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一 、 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.youkuaiyun.com/Thinkerlife/article/details/80704172

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值