You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Bazel 6.0.0构建hello_world cc_grpc_library失败求助

问题解决:Bazel 6.0.0 + bzlmod 构建gRPC C++ Hello World

错误原因

  1. Bazel 6.0.0移除了native.bind规则:你使用的gRPC 1.47.0版本的依赖脚本仍在调用该已废弃的规则,导致构建失败。
  2. bzlmod模式下错误使用WORKSPACE时代的依赖加载方式:在BUILD文件中调用grpc_deps()和grpc_extra_deps()是旧版WORKSPACE管理依赖的做法,bzlmod通过MODULE.bazel自动处理依赖,无需手动调用这些函数。

解决方案步骤

1. 升级gRPC到适配Bazel 6和bzlmod的版本

选择1.50.0及以上版本的gRPC,这些版本已修复native.bind的兼容问题并支持bzlmod。

2. 修改MODULE.bazel文件

替换原有内容为:

module(name = "helloworld", version = "1.0")

# 引入proto规则依赖
bazel_dep(name = "rules_proto", version = "5.3.0-21.7")

# 引入适配bzlmod的gRPC版本
bazel_dep(name = "grpc", version = "1.54.0")

3. 修改BUILD文件

移除grpc_deps()和grpc_extra_deps()调用,简化后内容:

load("@rules_proto//proto:defs.bzl", "proto_library")
load("@grpc//bazel:cc_grpc_library.bzl", "cc_grpc_library")

proto_library(
    name = "helloworld_proto",
    srcs = ["helloworld.proto"],
)

cc_proto_library(
    name = "helloworld_cc_proto",
    deps = [":helloworld_proto"],
)

cc_grpc_library(
    name = "helloworld_cc_grpc",
    srcs = [":helloworld_proto"],
    grpc_only = True,
    deps = [":helloworld_cc_proto"],
)

4. 配置.bazelrc(可选但推荐)

添加以下内容确保bzlmod模式开启:

common --enable_bzlmod

5. 验证构建

执行命令:

bazel build :helloworld_cc_grpc

内容的提问来源于stack exchange,提问作者CleanCoder265

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 13:15:24