gRPC 和 Protocol Buffers 安装指南

方法一:使用APT包管理器(Ubuntu 20.04+)

1. 更新包索引

sudo apt update

2. 安装基础依赖

sudo apt install -y build-essential autoconf libtool pkg-config

3. 安装Protocol Buffers

sudo apt install -y libprotobuf-dev protobuf-compiler

4. 安装gRPC

# Ubuntu 20.04及以上版本
sudo apt install -y libgrpc++-dev libgrpc-dev

# 如果上面的包不可用,使用下面的命令
sudo apt install -y libgrpc++1 libgrpc10 libgrpc-dev libgrpc++-dev

5. 安装gRPC插件

sudo apt install -y protobuf-compiler-grpc

方法二:从源码编译安装(推荐,获得最新版本)

1. 安装依赖

sudo apt-get install -y build-essential autoconf libtool pkg-config \
    libssl-dev cmake git

2. 克隆gRPC仓库

cd /tmp
git clone --recurse-submodules -b v1.58.0 --depth 1 --shallow-submodules https://github.com/grpc/grpc

3. 编译和安装gRPC

cd grpc
mkdir -p cmake/build
cd cmake/build

# 配置CMake
cmake -DgRPC_INSTALL=ON \
      -DgRPC_BUILD_TESTS=OFF \
      -DCMAKE_INSTALL_PREFIX=/usr/local \
      ../..

# 编译(这会花费一些时间)
make -j$(nproc)

# 安装
sudo make install
sudo ldconfig

4. 安装Protocol Buffers(如果需要更新版本)

cd /tmp
git clone -b v3.21.12 --depth 1 https://github.com/protocolbuffers/protobuf.git
cd protobuf
git submodule update --init --recursive

# 使用CMake构建
mkdir cmake/build && cd cmake/build
cmake -Dprotobuf_BUILD_TESTS=OFF \
      -DCMAKE_INSTALL_PREFIX=/usr/local \
      ..
make -j$(nproc)
sudo make install
sudo ldconfig

方法三:使用vcpkg(跨平台包管理器)

1. 安装vcpkg

cd ~
git clone https://github.com/Microsoft/vcpkg.git
cd vcpkg
./bootstrap-vcpkg.sh

2. 安装gRPC和protobuf

./vcpkg install grpc

3. 在CMake中使用

# 在CMakeLists.txt中添加
set(CMAKE_TOOLCHAIN_FILE "~/vcpkg/scripts/buildsystems/vcpkg.cmake")

验证安装

检查protoc版本

protoc --version
# 应该输出: libprotoc 3.x.x

检查gRPC插件

which grpc_cpp_plugin
# 应该输出: /usr/local/bin/grpc_cpp_plugin 或类似路径

检查pkg-config

pkg-config --modversion grpc++
pkg-config --modversion protobuf

检查库文件

# 查找gRPC库
ldconfig -p | grep grpc

# 查找protobuf库  
ldconfig -p | grep protobuf

修复CMakeLists.txt以适应系统

如果使用系统包管理器安装,修改CMakeLists.txt:

# 查找Protobuf - 使用兼容的方式
find_package(Protobuf REQUIRED)
if(NOT Protobuf_FOUND)
    find_package(PkgConfig REQUIRED)
    pkg_check_modules(PROTOBUF REQUIRED protobuf)
endif()

# 查找gRPC - 使用pkg-config
find_package(PkgConfig REQUIRED)
pkg_check_modules(GRPC REQUIRED grpc++)

# 设置变量
set(_PROTOBUF_LIBPROTOBUF ${PROTOBUF_LIBRARIES})
set(_GRPC_GRPCPP ${GRPC_LIBRARIES})

常见问题解决

1. 找不到grpc_cpp_plugin

# 手动查找
find /usr -name "grpc_cpp_plugin" 2>/dev/null

# 如果在/usr/bin
sudo ln -s /usr/bin/grpc_cpp_plugin /usr/local/bin/grpc_cpp_plugin

2. CMake找不到gRPC

创建FindGRPC.cmake文件:

# FindGRPC.cmake
find_package(PkgConfig REQUIRED)
pkg_check_modules(GRPC REQUIRED grpc++)

find_program(GRPC_CPP_PLUGIN grpc_cpp_plugin)

if(GRPC_FOUND AND GRPC_CPP_PLUGIN)
    set(GRPC_FOUND TRUE)
else()
    set(GRPC_FOUND FALSE)
endif()

3. 链接错误

确保LD_LIBRARY_PATH包含安装路径:

export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
echo 'export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH' >> ~/.bashrc

4. Ubuntu 18.04特殊处理

Ubuntu 18.04的gRPC版本较旧,建议从源码编译或使用Docker:

FROM ubuntu:20.04
RUN apt-get update && apt-get install -y \
    libgrpc++-dev \
    libprotobuf-dev \
    protobuf-compiler-grpc

Python端依赖安装

# 安装Python gRPC工具
pip3 install grpcio grpcio-tools

# 验证
python3 -c "import grpc; print(grpc.__version__)"

快速安装脚本

创建install_grpc.sh:

#!/bin/bash
set -e

echo "Installing gRPC and Protocol Buffers..."

# 更新系统
sudo apt update

# 安装依赖
sudo apt install -y \
    build-essential \
    autoconf \
    libtool \
    pkg-config \
    libssl-dev \
    cmake \
    git

# 安装protobuf
sudo apt install -y \
    libprotobuf-dev \
    protobuf-compiler

# 安装gRPC
sudo apt install -y \
    libgrpc++-dev \
    libgrpc-dev \
    protobuf-compiler-grpc

# 安装Python包
pip3 install --user grpcio grpcio-tools

echo "Installation complete!"
echo "Verifying installation..."

protoc --version
pkg-config --modversion grpc++ || echo "gRPC++ not found in pkg-config"
python3 -c "import grpc; print('Python gRPC:', grpc.__version__)"

echo "Done!"

运行:

chmod +x install_grpc.sh
./install_grpc.sh
上一篇