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

使用Bazel构建Rust项目时openssl-sys crate编译失败求助

解决Bazel构建Rust程序依赖openssl-sys的路径错误问题

针对你遇到的openssl-src构建时找不到文件的panic错误,给你几个实用的解决方向:

  • 强制使用系统OpenSSL,跳过源码编译
    报错里显示OPENSSL_NO_VENDOR unset,这意味着openssl-sys默认会尝试通过openssl-src编译OpenSSL源码,但Bazel沙盒环境可能没处理好源码的路径。你可以通过设置环境变量禁用这个行为:

    • 在.bazelrc中添加:build --action_env=OPENSSL_NO_VENDOR=1
    • 或者在你的Rust构建目标(rust_binary/rust_library)里直接指定环境变量:
      rust_binary(
          name = "your_program",
          srcs = ["src/main.rs"],
          env = {"OPENSSL_NO_VENDOR": "1"},
          deps = [...],
      )
      
  • 手动指定系统OpenSSL路径
    如果系统已经安装了OpenSSL,可以直接让openssl-sys链接系统库:

    • 在.bazelrc中添加:build --action_env=OPENSSL_DIR=/usr/local/ssl(路径根据你的系统实际情况调整,比如Ubuntu可能是/usr/lib/ssl)
  • 检查crate_universe和rust_rules版本
    确保你用的是最新版的rust_rules和crate_universe,旧版本可能对openssl-src这类需要下载外部资源的crate处理有问题。更新后重新生成crate_universe的依赖文件。

  • 临时禁用沙盒排查问题
    试试用bazel build --no-sandbox //your:target构建,如果成功,说明是沙盒隔离导致openssl-src的build.rs无法访问下载的源码文件。这种情况下可以考虑:

    • 给openssl-src对应的crate目标添加data依赖,确保源码文件被包含在沙盒中
    • 或者调整Bazel的沙盒配置,允许访问相关路径

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 13:42:22