Linux   发布时间:2022-04-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了在linux中安装protobuf编译器和运行时环境大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

为了使用源码编译protobuf,需要下面的工具: autoconf, automake, libtool, make, g++, unzip 如果你使用ubuntu/debian,你可以使用如下方式安装这些工具: $ sudo apt-get install autoconf automake libtool curl make g++ unzip 在其他系统中,请使用对应的包管理工具安装这些必

为了使用源码编译protobuf,需要下面的工具:

autoconf,automake,libtool,make,g++,unzip

如果你使用ubuntu/debian,你可以使用如下方式安装这些工具:

$ sudo apt-get install autoconf automake libtool curl make g++ unzip

在其他系统中,请使用对应的包管理工具安装这些必要的工具。

为了获得源码,可以从如下的地址下载一个.tag.gz包或者.zip包,这个取决于自己的喜好。

https://github.com/protocolbuffers/protobuf/releases/latest

如果你只需要C++,下载protobuf-cpp-[version].tar.gz,如果你还需要使用其他语言,例如java,你可以只下载protobuf-java-[version].tar.gz(每一个包中都已经包含了C++源码),如果你除了C++,还需要多种语言,下载protobuf-all-[version].tar.gz

为了编译和安装C++ Protocal Buffer运行环境和Protocol Buffer编译器(protoC),执行下面的指令:

$ ./configure --prefix=... (下面会讲解)

$ make      # 这个步骤时间可能会很长

$ make check    # 这个步骤时间可能会很长

$ sudo make install

$ sudo ldconfig # refresh shared library cache.

如果”make check”失败了,你仍然可以安装,但是protobuf的有些特征在你的电脑上不能正确工作。如果你坚持安装,你就需要虑这个风险。

 

注解:

1. 关于安装位置

如果使用./configure后面不带-prefix参数,那么这个包将会安装到/usr/local。然而,在很多平台中,/usr/local/lib不是LD_LIBRARY_PATH(用来搜索共享库)的一部分。你可以把这个目录添加成为LD_LIBRARY_PATH的一部分,你也可以将protobuf安装到/usr。为了实现这个效果调用./configure的时候,使用如下语句:

./configure --prefix=/usr

如果在一个系统中需要同时使用多个protobuf版本,可以虑将protobuf安装到各自的文件夹中,然后显示指定LD_LIBRARY_PATH,从而避免冲突。

如果你已经将protobuf构建到一个不同的前缀(prefiX),先调用”make clean”,然后再重新构建一次。

2. 编译依赖包

为了编译一个使用protobuf的包,你需要传入各种参数给编译器和链接器。2.2.0版本开始,protobuf可以使用pkg-config得到这些参数。如果你已经安装了pkg-config,你可以调用如下指令来获取这些参数:

pkg-config --cflags protobuf # print compiler flags

pkg-config --libs protobuf # print linker flags

pkg-config --cflags --libs protobuf # print both

 

在我的电脑中,

pkg-config --cflags protobuf 输出 -pthread -I/usr/local/include

pkg-config --libs protobuf 输出 -L/usr/local/lib -lprotobuf -pthread

 

例如可以使用如下方式编译使用protobufC++代码

c++ my_program.cc my_proto.pb.cc `pkg-config --cflags --libs protobuf`

 3. 二进制兼容性警告

由于C++的特性,两个protobuf版本的基本不会有兼容的ABIs。如果你使用一个旧版本的libprotobuf链接程序,这个程序一般不能够使用新版本的动态库运行。这个问题会在你的程序刚启动的时候,就被发现。为了避免这种情况,你也可以虑使用静态链接方法就是,在编译时,只安装静态库:

$ ./configure --disable-shared

大佬总结

以上是大佬教程为你收集整理的在linux中安装protobuf编译器和运行时环境全部内容,希望文章能够帮你解决在linux中安装protobuf编译器和运行时环境所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。