方法一:使用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