在 Ubuntu 中安装 C++ 版本的 Protocol Buffers

在 Ubuntu 中安装 C++ 版本的 Protocol Buffers(Protobuf)有两种主要方法:

  1. 通过 Ubuntu 的包管理器 apt 安装(适用于快速安装,版本可能较旧)
  2. 从源代码编译安装(适用于需要最新版本或自定义配置的情况)

以下是详细的步骤说明:


方法一:使用 apt 包管理器安装

这种方法简单快捷,适合大多数用户。如果不需要最新版本的 Protobuf,可以选择此方法。

步骤:

  1. 更新包列表

    bash 复制代码
    sudo apt update
  2. 安装 Protobuf 编译器和开发库

    bash 复制代码
    sudo apt install -y protobuf-compiler libprotobuf-dev
  3. 验证安装

    检查 protoc 版本以确认安装成功:

    bash 复制代码
    protoc --version

    你应该看到类似如下的输出:

    libprotoc 3.x.x
    

注意事项:

  • Ubuntu 官方仓库中的 Protobuf 版本可能不是最新的。如果需要更新版本,请考虑从源代码编译安装。

方法二:从源代码编译安装(获取最新版本)

如果你需要 Protobuf 的最新功能或特性,建议从源代码编译安装。

步骤:

  1. 安装必要的依赖

    首先,确保系统中安装了编译所需的工具和库:

    bash 复制代码
    sudo apt update
    sudo apt install -y autoconf automake libtool curl make g++ unzip
  2. 下载 Protobuf 源代码

    访问 Protobuf 的 GitHub 仓库 获取最新的发布版本,或使用以下命令下载特定版本(例如 21.0):

    bash 复制代码
    wget https://github.com/protocolbuffers/protobuf/releases/download/v21.0/protobuf-all-21.0.tar.gz

    解压下载的文件:

    bash 复制代码
    tar -xzvf protobuf-all-21.0.tar.gz
    cd protobuf-21.0
  3. 编译和安装 Protobuf

    执行以下命令进行编译和安装:

    bash 复制代码
    ./configure
    make
    make check
    sudo make install
    sudo ldconfig  # 更新共享库缓存

    说明:

    • ./configure:配置编译选项。
    • make:编译源代码。
    • make check:运行测试确保编译正确。
    • sudo make install:安装编译好的库和工具。
    • sudo ldconfig:更新系统的共享库缓存,确保新安装的库被识别。
  4. 验证安装

    检查 protoc 版本:

    bash 复制代码
    protoc --version

    输出应显示你安装的版本,例如:

    libprotoc 21.0
    
  5. 设置环境变量(如果需要)

    如果 protoc 命令未在 PATH 中,可能需要手动添加。例如,如果安装路径为 /usr/local/bin,确保该路径在 PATH 中:

    bash 复制代码
    echo 'export PATH=/usr/local/bin:$PATH' >> ~/.bashrc
    source ~/.bashrc

注意事项:

  • 卸载旧版本(如果存在) :如果之前通过 apt 安装过 Protobuf,建议先卸载以避免版本冲突:

    bash 复制代码
    sudo apt remove -y protobuf-compiler libprotobuf-dev
  • 安装特定版本:确保下载与你项目需求匹配的 Protobuf 版本。


使用 Protobuf 的 C++ 库

安装 Protobuf 后,你可以在 C++ 项目中使用它。以下是一个简单的使用示例:

  1. 编写 .proto 文件

    例如,创建 example.proto

    proto 复制代码
    syntax = "proto3";
    
    message Person {
      string name = 1;
      int32 id = 2;
      string email = 3;
    }
  2. 生成 C++ 代码

    使用 protoc 编译器生成相应的 C++ 文件:

    bash 复制代码
    protoc --cpp_out=. example.proto

    这将生成 example.pb.hexample.pb.cc

  3. 在 C++ 项目中使用

    在你的 C++ 代码中包含生成的头文件,并链接 Protobuf 库。例如,main.cpp

    cpp 复制代码
    #include <iostream>
    #include "example.pb.h"
    
    int main() {
      Person person;
      person.set_name("Alice");
      person.set_id(123);
      person.set_email("alice@example.com");
    
      std::cout << "Name: " << person.name() << std::endl;
      std::cout << "ID: " << person.id() << std::endl;
      std::cout << "Email: " << person.email() << std::endl;
    
      return 0;
    }
  4. 编译项目

    使用 g++ 编译并链接 Protobuf 库:

    bash 复制代码
    g++ main.cpp example.pb.cc -lprotobuf -o main
  5. 运行程序

    bash 复制代码
    ./main

    输出应为:

    Name: Alice
    ID: 123
    Email: alice@example.com
    

相关推荐
sun0077009 分钟前
键盘鼠标共享工具Barrier(kail与windows操作系统)
linux
筑梦之路21 分钟前
Linux 高级路由 —— 筑梦之路
linux·运维
名为逗比26 分钟前
从CentOS到龙蜥:企业级Linux迁移实践记录(系统安装)
linux·运维·centos
我是唐青枫27 分钟前
Linux ffmpeg 基础用法
linux·运维·ffmpeg
一张假钞28 分钟前
CentOS 6.8 安装 Nginx
linux·nginx·centos
AnnyYoung29 分钟前
yum系统报错:SyntaxError: multiple exception types must be parenthesized
linux·运维·服务器·centos
茉莉玫瑰花茶41 分钟前
Linux第一个系统程序---进度条
linux·运维·服务器
网络安全Ash1 小时前
Linux 用户和用户组管理
linux·运维·系统安全
计算机小混子1 小时前
C++实现设计模式---访问者模式 (Visitor)
c++·设计模式·访问者模式
佐咖2 小时前
C++STL中常用的排序算法:sort、random_shuffle、merge和reverse(附C++代码)
开发语言·c++·排序算法