protobuf,protobuf-c的安装和交叉编译 - Go语言中文社区

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


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

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/qq_38074673/article/details/91856284
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2019-09-13 19:39:38
  • 阅读 ( 1838 )
  • 分类:

0 条评论

请先 登录 后评论

官方社群

GO教程

推荐文章

猜你喜欢