在Arm CentOS 7 上编译 gRPC

在Arm CentOS 7 上编译 gRPC
前提条件
确保你的系统已经安装了以下软件包:

在Arm CentOS 7 上编译 gRPC

前提条件

确保你的系统已经安装了以下软件包:

  • Git
  • CMake
  • GCC 和 G++
  • 必要的开发工具和库

你可以使用以下命令来安装这些依赖项:

sudo yum install -y epel-release
sudo yum install -y cmake gcc-c++ git autoconf automake libtool make

步骤 1:克隆 gRPC 仓库

首先,克隆 gRPC 仓库并切换到特定版本(例如 v1.65.1):

# 克隆 gRPC 仓库
git clone https://github.com/grpc/grpc.git
cd grpc

# 切换到特定的 tag
git checkout v1.65.1

# 初始化并更新所有子模块
git submodule update --init --recursive

步骤 2:配置和编译 gRPC

创建一个构建目录并使用 CMake 配置编译环境:

# 创建构建目录
mkdir -p cmake/build
cd cmake/build

# 运行 CMake 配置
cmake ../.. -DgRPC_INSTALL=ON -DCMAKE_BUILD_TYPE=Release -DgRPC_BUILD_TESTS=OFF -DBUILD_SHARED_LIBS=ON -DgRPC_SSL_PROVIDER=package
 -DCMAKE_INSTALL_PREFIX=/path/to/grpc 
# 需要编译动态库,添加参数 -DBUILD_SHARED_LIBS=ON
# 需要编译Debug/Release版本,添加参数 -DCMAKE_BUILD_TYPE=Debug/Release
# -DgRPC_SSL_PROVIDER=package 用户提供安装包

编译并安装 gRPC:

# 编译 gRPC
make -j16

# 安装 gRPC
make install

验证安装

你可以通过以下步骤验证 gRPC 是否安装成功:

# 检查库文件
ls /path/to/grpc/lib64

常见问题

问题 1:gRPC_ABSL_PROVIDER is module but ABSL_ROOT_DIR is wrong


Dependency management

gRPC's CMake build system has two options for handling dependencies. CMake can build the dependencies for you, or it can search for libraries that are already installed on your system and use them to build gRPC.

This behavior is controlled by the gRPC_<depname>_PROVIDER CMake variables, e.g. gRPC_CARES_PROVIDER. The options that these variables take are as follows:
module - build dependencies alongside gRPC. The source code is obtained from gRPC's git submodules.
package - use external copies of dependencies that are already available on your system. These could come from your system package manager, or perhaps you pre-installed them using CMake with the CMAKE_INSTALL_PREFIX option.

For example, if you set gRPC_CARES_PROVIDER=module, then CMake will build c-ares before building gRPC. On the other hand, if you set gRPC_CARES_PROVIDER=package, then CMake will search for a copy of c-ares that's already installed on your system and use it to build gRPC.

基于以上官网对于第三方依赖的解释,这里需要下载源码并使用module模式。
如果在编译过程中遇到这个错误,请确保你已经正确初始化和更新了所有子模块。

git submodule update --init --recursive

问题 2:如何确认是否切换到了 v1.65.1 这个 tag?

使用以下命令查看当前的 tag:

# 查看当前状态
git status

# 查看当前 commit 的详细信息
git show

# 使用 git describe 查看当前 tag
git describe --tags

你应该看到类似 HEAD detached at v1.65.1 的输出。

完整的脚本

以下是一个包含所有步骤的完整脚本,可以复制并运行:

#!/bin/bash

# 安装依赖
sudo yum install -y epel-release
sudo yum install -y cmake gcc-c++ git autoconf automake libtool make

# 克隆 gRPC 仓库
git clone https://github.com/grpc/grpc.git
cd grpc

# 切换到特定的 tag
git checkout v1.65.1

# 初始化并更新所有子模块
git submodule update --init --recursive

# 创建构建目录
mkdir -p cmake/build
cd cmake/build

# 运行 CMake 配置
cmake ../.. -DgRPC_INSTALL=ON -DCMAKE_BUILD_TYPE=Release -DgRPC_BUILD_TESTS=OFF -DBUILD_SHARED_LIBS=ON -DCMAKE_INSTALL_PREFIX=/path/to/grpc


# 编译 gRPC
make -j16

# 安装 gRPC
make install

# 验证安装
ls /path/to/grpc/lib64

总结

通过以上步骤,你可以在 CentOS 7 上成功编译并安装 gRPC。确保所有依赖项已经正确安装,并按照步骤进行操作。如果遇到问题,可以参考文档中的常见问题部分进行排查。

0 0 投票数
文章评分
订阅评论
提醒
guest
0 评论
内联反馈
查看所有评论