Linux服务器安装protobuf3

一:下载protobuf3软件包,目前的最新版本是3.17.3

https://github.com/protocolbuffers/protobuf/releases/tag/v3.17.3

以为项目里使用了python,所以下载的是python版本的protobuf:

https://github.com/protocolbuffers/protobuf/releases/download/v3.17.3/protobuf-python-3.17.3.tar.gz

二:执行安装
        新版本不需要执行autogen.sh脚本,直接./configure就行

  1. tar zvxf protobuf-python-3.17.3.tar.gz

  2. cd protobuf-3.17.3

  3. ./configure –prefix=/usr/local/   #自定义安装路径,也可以不指定,使用默认路径

  4. sudo make #要编译很久

  5. sudo make check

  6. sudo make install

        到此步还没有安装完毕,在/etc/profile 或者用户目录 ~/.bash_profile
        添加下面内容,PATH的路径要根据自己的实际安装目录进行修改
        #(动态库搜索路径) 程序加载运行期间查找动态链接库时指定除系统默认路径之外的其他路径
        export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/protobuf/lib/
        #(静态库搜索路径) 程序编译期间查找动态链接库时指定查找共享库的路径
        export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/protobuf/lib/
        #执行程序搜索路径
        export PATH=$PATH:/usr/local/protobuf/bin/
        #c程序头文件搜索路径
        export C_INCLUDE_PATH=$C_INCLUDE_PATH:/usr/local/protobuf/include/
        #c++程序头文件搜索路径
        export CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:/usr/local/protobuf/include/
        #pkg-config 路径
        export PKG_CONFIG_PATH=/usr/local/protobuf/lib/pkgconfig/

        修改完profile文件后,需要重新退出ssh连接然后登陆才能生效。

        检查路径是否生效:

        echo $LIBRARY_PATH

三: 继续安装protobuf的python模块(如果不用python,可跳过这一步)

  1. #cd ./python
  2. #python setup.py build
  3. #python setup.py test
  4. #python setup.py install

四:安装完成,验证Linux命令

        #protoc –version

五:验证Python模块是否被正确安装
        #python
        >>>import google.protobuf
        如果没有报错,说明安装正常。

六:安装pip的protobuf

       由于我的服务器环境没有连接外网,不能通过在线安装pip包,需要手动下载,下载连接:https://pypi.org/project/protobuf/#files,根据自己的情况选择响应的版本,我的环境是centos7,python3.7,所以下载的是:protobuf-3.17.3-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl 这个版本。

下载完成后,直接执行pip install protobuf-3.17.3-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl即可。

        

Note:

  error: package directory 'google/protobuf/compiler' does not exist

  解决办法:在google/protobuf/下创建compiler文件夹

  再次在protobuf文件夹下运行:python setup.py install

今天先写到这里,后面有时间再补充上在python3里使用protobuf2.5的修改方法。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的示例代码,演示了如何在Linux C++中接收protobuf消息并进行解码: ```cpp #include <iostream> #include <string> #include <netinet/in.h> #include <sys/socket.h> #include <arpa/inet.h> #include "my_proto.pb.h" using namespace std; int main() { int sockfd = socket(AF_INET, SOCK_STREAM, 0); if (sockfd < 0) { cerr << "socket error!" << endl; exit(-1); } struct sockaddr_in servaddr; bzero(&servaddr, sizeof(servaddr)); servaddr.sin_family = AF_INET; servaddr.sin_port = htons(8080); servaddr.sin_addr.s_addr = inet_addr("127.0.0.1"); if (connect(sockfd, (struct sockaddr*)&servaddr, sizeof(servaddr)) < 0) { cerr << "connect error!" << endl; exit(-1); } char buffer[1024]; int n = read(sockfd, buffer, sizeof(buffer)); if (n < 0) { cerr << "read error!" << endl; exit(-1); } MyProto my_proto; if (!my_proto.ParseFromArray(buffer, n)) { cerr << "protobuf parse error!" << endl; exit(-1); } cout << "message: " << my_proto.message() << endl; close(sockfd); return 0; } ``` 这里假设我们已经定义了名为`MyProto`的protobuf消息类型,并将其编码后发送给了本机的8080端口。在客户端中,我们首先创建一个Socket套接字,并将其连接到服务器。然后,我们从Socket中读取数据,并将其存储在名为`buffer`的字符数组中。接下来,我们使用`ParseFromArray`函数将`buffer`中的数据解析为protobuf消息。最后,我们打印出消息中的内容,并关闭Socket连接。 请注意,上述代码仅为演示目的,并未进行错误处理或异常情况处理。在实际应用中,你需要根据具体情况进行适当的错误处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值